Отправка прямого сообщения через Java Discord Api - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу, чтобы бот отправил прямое сообщение, но ради бога, я не могу найти точные методы / функции, чтобы сделать это. Все, что доступно, это отправить сообщение на канал того же сервера

   event.getChannel().sendMessage("hello").queue();

Я хочу, чтобы сообщение было отправлено непосредственно пользователю, а точнее, чтобы конкретный пользователь получил сообщение. пожалуйста, помогите!

1 Ответ

1 голос
/ 28 февраля 2020

Вам никогда не придется гадать, как использовать библиотеку - для этого и нужна документация. В любой библиотеке, достойной внимания, есть документация, в которой перечислены все классы, методы и свойства, о которых вам нужно беспокоиться.

Быстрый поиск в Google по запросу "discord-jda docs" приводит нас к javado c: https://ci.dv8tion.net/job/JDA/javadoc/index.html

Вы хотите отправить сообщение пользователю, верно? Итак, давайте воспользуемся панелью поиска и найдем User. Первый результат по типам net.dv8tion.jda.api.entities.User. Сейчас мы находимся на https://ci.dv8tion.net/job/JDA/javadoc/net/dv8tion/jda/api/entities/User.html

Если вы хотите узнать, как что-то сделать с пользователем , мы рассмотрим методы, которые есть у каждого пользователя. Два сразу бросаются в глаза: User.hasPrivateChannel() и User.openPrivateChannel(). Мы нажмем на второй, так как он выглядит актуальным.

И вот, документы имеют пример использования! Я процитирую это ниже:

// Send message without response handling
public void sendMessage(User user, String content) {
    user.openPrivateChannel()
        .flatMap(channel -> channel.sendMessage(content))
        .queue();
}

Это кажется довольно простым. Итак, базовое использование c, которое вы ищете (при условии, что event является MessageReceivedEvent), таково:

event.getAuthor().openPrivateChannel().flatMap(channel -> channel.sendMessage("hello")).queue();
...