JDA - отправить сообщение - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть своя BOT Discord, основанная на JDA.Мне нужно отправить текстовое сообщение на конкретный канал.Я знаю, как отправить сообщение как ответ onEvent, но у меня нет такого события.

У меня есть: Автор (BOT), Токен и Номер канала.

У меня вопрос: как отправить сообщение на этот канал без события ?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Хорошо, я думаю, что знаю, что вы имеете в виду.Вам не нужно иметь событие, чтобы получить идентификатор канала и отправить сообщение.Единственное, что вам нужно сделать, это создать экземпляр JDA, вызвать awaitReady (), из экземпляра которого вы можете получить все каналы (MessageChannels, TextChannels, VoiceChannels, либо вызвав

  • get [Text] Channels()
  • get [Text] ChannelById (id = ..)
  • get [Text] ChannelsByName (имя, игнорировать регистр))

Итак 1. Создание экземпляраJDA

    JDABuilder builder; 
    JDA jda = builder.build();
    jda.awaitReady();

Получить канал

List<TextChannel> channels = jda.getTextChannelsByName("general", true);
for(TextChannel ch : channels)
{
    sendMessage(ch, "message");
}

Отправить сообщение

static void sendMessage(TextChannel ch, String msg) 
{
    ch.sendMessage(msg).queue();
}

Надеюсь, это поможет.

0 голосов
/ 27 ноября 2018

Вам нужна только одна вещь, чтобы это произошло, это экземпляр JDA.Это может быть получено из большинства сущностей, таких как Пользователь / Гильдия / Канал и каждый экземпляр события.При этом вы можете использовать JDA.getTextChannelById для получения экземпляра TextChannel для отправки вашего сообщения.

class MyClass {
    private final JDA api;
    private final long channelId;
    private final String content;

    public MyClass(JDA api) {
        this.api = api;
    }

    public void doThing() {
         TextChannel channel = api.getTextChannelById(this.channelId);
         if (channel != null) {
             channel.sendMessage(this.content).queue();
         }
    }
}

Если у вас нет экземпляра JDA, вам придется вручную выполнить HTTP-запрос для отправкисообщение, для этого поиска документация дискорды или jda исходный код .Исходный код JDA может быть слишком сложным, чтобы брать его в качестве примера, поскольку он более абстрактный, чтобы разрешить использование любой конечной точки.

...