Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд Нормальный Discord RPC с кнопками без нативок

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
89
Реакции
2
Ну тип да всем привет. Мне нехуй было делать, поэтому выложу здесь то, как сделать нормальный дисорд рпс с кнопками без использования нативок (что бы можно было запускать на windows, linux и macos).

Первое что вам надо сделать, так это добавить в ваш проект мою библиотеку, которая находится на моём гитхабе (репозиторий —
Пожалуйста, авторизуйтесь для просмотра ссылки.
). По сути это сильно модифицированный discord-ipc от метеора, но вам на это будет конечно же похуй.
Если вы используете gradle в вашем проекте (тобишь вы делаете клиент на фабрике или фордже), то вы можете добавить библиотеку через мой maven репозиторий:
build.gradle:
Expand Collapse Copy
repositories {
    maven {
        name = "ferra13671-maven"
        url = "https://ferra13671.github.io/maven/"
    }
}

dependencies {
    implementation "com.ferra13671:discord-ipc:1.2" //Данная строчка не включит библиотеку в ваш джарник при билде. Вы можете использовать ShadowGradle плагин либо другие способы, чтобы внедрить библиотеку в джарник.
}
Если вы сидите на mcp, то просто скачайте последний релиз и закиньте в либы либо куда-то ещё я хз, ни сидел на mcp.

Ну так, с этим разобрались, теперь остался вопрос как этим пользоваться? Для этого я дам вам пример кода:

example:
Expand Collapse Copy
package example;

import com.ferra13671.discordipc.AvatarType;
import com.ferra13671.discordipc.UserAvatar;
import com.ferra13671.discordipc.activity.Button;
import com.ferra13671.discordipc.DiscordIPC;
import com.ferra13671.discordipc.activity.RichPresence;

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
 
    public static void startRPC() {

        //Запускаем дискорд ipc
        if (!DiscordIPC.start(932987954815696957L, () -> System.out.println("Discord IPC подключен для пользователя: " + DiscordIPC.getUser().username()))) {
            System.out.println("Не удалось запустить Discord IPC");
            return;
        }

        //Настраиваем активность
        RichPresence presence = new RichPresence();
       /*
       Если нужно изменить информацию об активности,
        то можно использовать presence.update(), в который вы должны передать функцию,
         принимающую информацию о текущей активности и возвращающую измененную информацию об активности.
        */
        presence.update(activityInfo ->
                activityInfo
                        .setDetails("Monkey!!!")
                        .setState("ABC")
                        .setLargeImage("a")
                        .setLargeText("Large image")
                        .setSmallImage("b")
                        .setSmallText("Small Image")
                        //.setParty(new Party("party", 1, 4)) //Можно также добавлять команду (правда смысл от этого?)
                        .setButtons(new Button("Nah", "https://www.youtube.com/watch?v=dQw4w9WgXcQ")) //Максимально под активностью может быть видно только 2 кнопки
        );
        //Устанавливаем активность в ipc
        DiscordIPC.setRichPresence(presence);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

      

        /*
        Можно также получить InputStream аватарки пользователя, которая может быть как и простой картинкой, так и гифкой (можно узнать при помощи энума AvatarType)
        Не рекомендую пытаться получить аватарку пользователя сразу после старта ipc, т.к. информация о пользователе еще может быть не передана дискордом.
         */
        UserAvatar userAvatar = DiscordIPC.getUser().getAvatarImage();
        if (userAvatar != null) {
            Path path = Paths.get("Avatar." + (userAvatar.avatarType() == AvatarType.Image ? "png" : "gif"));
            try (OutputStream outputStream = Files.newOutputStream(path)) {
                outputStream.write(userAvatar.inputStream().readAllBytes());
                userAvatar.inputStream().close();
                System.out.printf("Аватарка пользователя была сохранена по пути '%s'", path);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
 
    public static void stopRPC() {
        //При надобности останавливаем рпс
        DiscordIPC.stop();
    }
}

Пример работы rpc (никак не связано с примером кода, данным выше!!!):
1762122881174.png


Ну, вроде всё. Если есть вопросы — пишите. :CoolCat:
 
Последнее редактирование:
Ну тип да всем привет. Мне нехуй было делать, поэтому выложу здесь то, как сделать нормальный дисорд рпс с кнопками без использования нативок (что бы можно было запускать на windows, linux и macos).

Первое что вам надо сделать, так это добавить в ваш проект мою библиотеку, которая находится на моём гитхабе (репозиторий —
Пожалуйста, авторизуйтесь для просмотра ссылки.
). По сути это сильно модифицированный discord-ipc от метеора, но вам на это будет конечно же похуй.
Если вы используете gradle в вашем проекте (тобишь вы делаете клиент на фабрике или фордже), то вы можете добавить библиотеку через мой maven репозиторий:
build.gradle:
Expand Collapse Copy
repositories {
    maven {
        name = "ferra13671-maven"
        url = "https://ferra13671.github.io/maven/"
    }
}

dependencies {
    implementation "com.ferra13671:discord-ipc:1.2" //Данная строчка не включит библиотеку в ваш джарник при билде. Вы можете использовать ShadowGradle плагин либо другие способы, чтобы внедрить библиотеку в джарник.
}
Если вы сидите на mcp, то просто скачайте последний релиз и закиньте в либы либо куда-то ещё я хз, ни сидел на mcp.

Ну так, с этим разобрались, теперь остался вопрос как этим пользоваться? Для этого я дам вам пример кода:

example:
Expand Collapse Copy
package example;

import com.ferra13671.discordipc.AvatarType;
import com.ferra13671.discordipc.UserAvatar;
import com.ferra13671.discordipc.activity.Button;
import com.ferra13671.discordipc.DiscordIPC;
import com.ferra13671.discordipc.activity.RichPresence;

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
 
    public static void startRPC() {

        //Запускаем дискорд ipc
        if (!DiscordIPC.start(932987954815696957L, () -> System.out.println("Discord IPC подключен для пользователя: " + DiscordIPC.getUser().username()))) {
            System.out.println("Не удалось запустить Discord IPC");
            return;
        }

        //Настраиваем активность
        RichPresence presence = new RichPresence();
       /*
       Если нужно изменить информацию об активности,
        то можно использовать presence.update(), в который вы должны передать функцию,
         принимающую информацию о текущей активности и возвращающую измененную информацию об активности.
        */
        presence.update(activityInfo ->
                activityInfo
                        .setDetails("Monkey!!!")
                        .setState("ABC")
                        .setLargeImage("a")
                        .setLargeText("Large image")
                        .setSmallImage("b")
                        .setSmallText("Small Image")
                        //.setParty(new Party("party", 1, 4)) //Можно также добавлять команду (правда смысл от этого?)
                        .setButtons(new Button("Nah", "https://www.youtube.com/watch?v=dQw4w9WgXcQ")) //Максимально под активностью может быть видно только 2 кнопки
        );
        //Устанавливаем активность в ipc
        DiscordIPC.setRichPresence(presence);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

     

        /*
        Можно также получить InputStream аватарки пользователя, которая может быть как и простой картинкой, так и гифкой (можно узнать при помощи энума AvatarType)
        Не рекомендую пытаться получить аватарку пользователя сразу после старта ipc, т.к. информация о пользователе еще может быть не передана дискордом.
         */
        UserAvatar userAvatar = DiscordIPC.getUser().getAvatarImage();
        if (userAvatar != null) {
            Path path = Paths.get("Avatar." + (userAvatar.avatarType() == AvatarType.Image ? "png" : "gif"));
            try (OutputStream outputStream = Files.newOutputStream(path)) {
                outputStream.write(userAvatar.inputStream().readAllBytes());
                userAvatar.inputStream().close();
                System.out.printf("Аватарка пользователя была сохранена по пути '%s'", path);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
 
    public static void stopRPC() {
        //При надобности останавливаем рпс
        DiscordIPC.stop();
    }
}

Пример работы rpc (никак не связано с примером кода, данным выше!!!):
Посмотреть вложение 319002

Ну, вроде всё. Если есть вопросы — пишите. :CoolCat:
лев :roflanEbalo:
 
Ну тип да всем привет. Мне нехуй было делать, поэтому выложу здесь то, как сделать нормальный дисорд рпс с кнопками без использования нативок (что бы можно было запускать на windows, linux и macos).

Первое что вам надо сделать, так это добавить в ваш проект мою библиотеку, которая находится на моём гитхабе (репозиторий —
Пожалуйста, авторизуйтесь для просмотра ссылки.
). По сути это сильно модифицированный discord-ipc от метеора, но вам на это будет конечно же похуй.
Если вы используете gradle в вашем проекте (тобишь вы делаете клиент на фабрике или фордже), то вы можете добавить библиотеку через мой maven репозиторий:
build.gradle:
Expand Collapse Copy
repositories {
    maven {
        name = "ferra13671-maven"
        url = "https://ferra13671.github.io/maven/"
    }
}

dependencies {
    implementation "com.ferra13671:discord-ipc:1.2" //Данная строчка не включит библиотеку в ваш джарник при билде. Вы можете использовать ShadowGradle плагин либо другие способы, чтобы внедрить библиотеку в джарник.
}
Если вы сидите на mcp, то просто скачайте последний релиз и закиньте в либы либо куда-то ещё я хз, ни сидел на mcp.

Ну так, с этим разобрались, теперь остался вопрос как этим пользоваться? Для этого я дам вам пример кода:

example:
Expand Collapse Copy
package example;

import com.ferra13671.discordipc.AvatarType;
import com.ferra13671.discordipc.UserAvatar;
import com.ferra13671.discordipc.activity.Button;
import com.ferra13671.discordipc.DiscordIPC;
import com.ferra13671.discordipc.activity.RichPresence;

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
 
    public static void startRPC() {

        //Запускаем дискорд ipc
        if (!DiscordIPC.start(932987954815696957L, () -> System.out.println("Discord IPC подключен для пользователя: " + DiscordIPC.getUser().username()))) {
            System.out.println("Не удалось запустить Discord IPC");
            return;
        }

        //Настраиваем активность
        RichPresence presence = new RichPresence();
       /*
       Если нужно изменить информацию об активности,
        то можно использовать presence.update(), в который вы должны передать функцию,
         принимающую информацию о текущей активности и возвращающую измененную информацию об активности.
        */
        presence.update(activityInfo ->
                activityInfo
                        .setDetails("Monkey!!!")
                        .setState("ABC")
                        .setLargeImage("a")
                        .setLargeText("Large image")
                        .setSmallImage("b")
                        .setSmallText("Small Image")
                        //.setParty(new Party("party", 1, 4)) //Можно также добавлять команду (правда смысл от этого?)
                        .setButtons(new Button("Nah", "https://www.youtube.com/watch?v=dQw4w9WgXcQ")) //Максимально под активностью может быть видно только 2 кнопки
        );
        //Устанавливаем активность в ipc
        DiscordIPC.setRichPresence(presence);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

     

        /*
        Можно также получить InputStream аватарки пользователя, которая может быть как и простой картинкой, так и гифкой (можно узнать при помощи энума AvatarType)
        Не рекомендую пытаться получить аватарку пользователя сразу после старта ipc, т.к. информация о пользователе еще может быть не передана дискордом.
         */
        UserAvatar userAvatar = DiscordIPC.getUser().getAvatarImage();
        if (userAvatar != null) {
            Path path = Paths.get("Avatar." + (userAvatar.avatarType() == AvatarType.Image ? "png" : "gif"));
            try (OutputStream outputStream = Files.newOutputStream(path)) {
                outputStream.write(userAvatar.inputStream().readAllBytes());
                userAvatar.inputStream().close();
                System.out.printf("Аватарка пользователя была сохранена по пути '%s'", path);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
 
    public static void stopRPC() {
        //При надобности останавливаем рпс
        DiscordIPC.stop();
    }
}

Пример работы rpc (никак не связано с примером кода, данным выше!!!):
Посмотреть вложение 319002

Ну, вроде всё. Если есть вопросы — пишите. :CoolCat:
Годно
 
так вроде дискорд больше не принимает кнопки именно от IPC или эт ток у меня такие траблы имеются
ИЗМЕНЕНО: все я глянул это оказывается баг дискорда и все норм работает
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну тип да всем привет. Мне нехуй было делать, поэтому выложу здесь то, как сделать нормальный дисорд рпс с кнопками без использования нативок (что бы можно было запускать на windows, linux и macos).

Первое что вам надо сделать, так это добавить в ваш проект мою библиотеку, которая находится на моём гитхабе (репозиторий —
Пожалуйста, авторизуйтесь для просмотра ссылки.
). По сути это сильно модифицированный discord-ipc от метеора, но вам на это будет конечно же похуй.
Если вы используете gradle в вашем проекте (тобишь вы делаете клиент на фабрике или фордже), то вы можете добавить библиотеку через мой maven репозиторий:
build.gradle:
Expand Collapse Copy
repositories {
    maven {
        name = "ferra13671-maven"
        url = "https://ferra13671.github.io/maven/"
    }
}

dependencies {
    implementation "com.ferra13671:discord-ipc:1.2" //Данная строчка не включит библиотеку в ваш джарник при билде. Вы можете использовать ShadowGradle плагин либо другие способы, чтобы внедрить библиотеку в джарник.
}
Если вы сидите на mcp, то просто скачайте последний релиз и закиньте в либы либо куда-то ещё я хз, ни сидел на mcp.

Ну так, с этим разобрались, теперь остался вопрос как этим пользоваться? Для этого я дам вам пример кода:

example:
Expand Collapse Copy
package example;

import com.ferra13671.discordipc.AvatarType;
import com.ferra13671.discordipc.UserAvatar;
import com.ferra13671.discordipc.activity.Button;
import com.ferra13671.discordipc.DiscordIPC;
import com.ferra13671.discordipc.activity.RichPresence;

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
 
    public static void startRPC() {

        //Запускаем дискорд ipc
        if (!DiscordIPC.start(932987954815696957L, () -> System.out.println("Discord IPC подключен для пользователя: " + DiscordIPC.getUser().username()))) {
            System.out.println("Не удалось запустить Discord IPC");
            return;
        }

        //Настраиваем активность
        RichPresence presence = new RichPresence();
       /*
       Если нужно изменить информацию об активности,
        то можно использовать presence.update(), в который вы должны передать функцию,
         принимающую информацию о текущей активности и возвращающую измененную информацию об активности.
        */
        presence.update(activityInfo ->
                activityInfo
                        .setDetails("Monkey!!!")
                        .setState("ABC")
                        .setLargeImage("a")
                        .setLargeText("Large image")
                        .setSmallImage("b")
                        .setSmallText("Small Image")
                        //.setParty(new Party("party", 1, 4)) //Можно также добавлять команду (правда смысл от этого?)
                        .setButtons(new Button("Nah", "https://www.youtube.com/watch?v=dQw4w9WgXcQ")) //Максимально под активностью может быть видно только 2 кнопки
        );
        //Устанавливаем активность в ipc
        DiscordIPC.setRichPresence(presence);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

     

        /*
        Можно также получить InputStream аватарки пользователя, которая может быть как и простой картинкой, так и гифкой (можно узнать при помощи энума AvatarType)
        Не рекомендую пытаться получить аватарку пользователя сразу после старта ipc, т.к. информация о пользователе еще может быть не передана дискордом.
         */
        UserAvatar userAvatar = DiscordIPC.getUser().getAvatarImage();
        if (userAvatar != null) {
            Path path = Paths.get("Avatar." + (userAvatar.avatarType() == AvatarType.Image ? "png" : "gif"));
            try (OutputStream outputStream = Files.newOutputStream(path)) {
                outputStream.write(userAvatar.inputStream().readAllBytes());
                userAvatar.inputStream().close();
                System.out.printf("Аватарка пользователя была сохранена по пути '%s'", path);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
 
    public static void stopRPC() {
        //При надобности останавливаем рпс
        DiscordIPC.stop();
    }
}

Пример работы rpc (никак не связано с примером кода, данным выше!!!):
Посмотреть вложение 319002

Ну, вроде всё. Если есть вопросы — пишите. :CoolCat:
Меньше статики и возможно я бы использовал
 
Cntrl c + cntrl v Уже побежал делать а так один из лучших как по мне гайдов для пастеров на такой "типо сложный" Discord RPC , Очень хороший и подробный гайд жду от тебя ещё темы на югейме :seemsgood: .
 
так вроде дискорд больше не принимает кнопки именно от IPC или эт ток у меня такие траблы имеются
ИЗМЕНЕНО: все я глянул это оказывается баг дискорда и все норм работает
Как пофиксил
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну тип да всем привет. Мне нехуй было делать, поэтому выложу здесь то, как сделать нормальный дисорд рпс с кнопками без использования нативок (что бы можно было запускать на windows, linux и macos).

Первое что вам надо сделать, так это добавить в ваш проект мою библиотеку, которая находится на моём гитхабе (репозиторий —
Пожалуйста, авторизуйтесь для просмотра ссылки.
). По сути это сильно модифицированный discord-ipc от метеора, но вам на это будет конечно же похуй.
Если вы используете gradle в вашем проекте (тобишь вы делаете клиент на фабрике или фордже), то вы можете добавить библиотеку через мой maven репозиторий:
build.gradle:
Expand Collapse Copy
repositories {
    maven {
        name = "ferra13671-maven"
        url = "https://ferra13671.github.io/maven/"
    }
}

dependencies {
    implementation "com.ferra13671:discord-ipc:1.2" //Данная строчка не включит библиотеку в ваш джарник при билде. Вы можете использовать ShadowGradle плагин либо другие способы, чтобы внедрить библиотеку в джарник.
}
Если вы сидите на mcp, то просто скачайте последний релиз и закиньте в либы либо куда-то ещё я хз, ни сидел на mcp.

Ну так, с этим разобрались, теперь остался вопрос как этим пользоваться? Для этого я дам вам пример кода:

example:
Expand Collapse Copy
package example;

import com.ferra13671.discordipc.AvatarType;
import com.ferra13671.discordipc.UserAvatar;
import com.ferra13671.discordipc.activity.Button;
import com.ferra13671.discordipc.DiscordIPC;
import com.ferra13671.discordipc.activity.RichPresence;

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
 
    public static void startRPC() {

        //Запускаем дискорд ipc
        if (!DiscordIPC.start(932987954815696957L, () -> System.out.println("Discord IPC подключен для пользователя: " + DiscordIPC.getUser().username()))) {
            System.out.println("Не удалось запустить Discord IPC");
            return;
        }

        //Настраиваем активность
        RichPresence presence = new RichPresence();
       /*
       Если нужно изменить информацию об активности,
        то можно использовать presence.update(), в который вы должны передать функцию,
         принимающую информацию о текущей активности и возвращающую измененную информацию об активности.
        */
        presence.update(activityInfo ->
                activityInfo
                        .setDetails("Monkey!!!")
                        .setState("ABC")
                        .setLargeImage("a")
                        .setLargeText("Large image")
                        .setSmallImage("b")
                        .setSmallText("Small Image")
                        //.setParty(new Party("party", 1, 4)) //Можно также добавлять команду (правда смысл от этого?)
                        .setButtons(new Button("Nah", "https://www.youtube.com/watch?v=dQw4w9WgXcQ")) //Максимально под активностью может быть видно только 2 кнопки
        );
        //Устанавливаем активность в ipc
        DiscordIPC.setRichPresence(presence);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

     

        /*
        Можно также получить InputStream аватарки пользователя, которая может быть как и простой картинкой, так и гифкой (можно узнать при помощи энума AvatarType)
        Не рекомендую пытаться получить аватарку пользователя сразу после старта ipc, т.к. информация о пользователе еще может быть не передана дискордом.
         */
        UserAvatar userAvatar = DiscordIPC.getUser().getAvatarImage();
        if (userAvatar != null) {
            Path path = Paths.get("Avatar." + (userAvatar.avatarType() == AvatarType.Image ? "png" : "gif"));
            try (OutputStream outputStream = Files.newOutputStream(path)) {
                outputStream.write(userAvatar.inputStream().readAllBytes());
                userAvatar.inputStream().close();
                System.out.printf("Аватарка пользователя была сохранена по пути '%s'", path);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
 
    public static void stopRPC() {
        //При надобности останавливаем рпс
        DiscordIPC.stop();
    }
}

Пример работы rpc (никак не связано с примером кода, данным выше!!!):
Посмотреть вложение 319002

Ну, вроде всё. Если есть вопросы — пишите. :CoolCat:
/up
 
Назад
Сверху Снизу