Как заставить бота Discord js отправлять прямое / личное сообщение не автору?

Я использую node.js для разногласий.

После того, как я сделаю команду, я хочу, чтобы мой бот отправлял прямое / личное сообщение определенному человеку, а не автору, который делает команду (мне).

Прямо сейчас у меня есть ‹@ 000000000000000000> (я думаю, это называется идентификатором), который находится в строковом формате.

Например, этот код client.sendMessage (message.author, "Hello!"); отправляет автору сообщение Hello. Но мне нужен такой, как client.sendMessage (message.user ("‹ @ 000000000000000000> ")," Привет! ");

Существует ли такая функция?

Для справки: я делаю игрового бота-оборотня, в котором игрокам случайным образом назначаются роли, и после того, как я прикажу w! Play, я хочу, чтобы игроки получили свои роли в DM.


person ricola    schedule 05.08.2017    source источник


Ответы (2)


Да, просто возьмите объект user и отправьте ему. Вам понадобится их идентификатор, поэтому проанализируйте часть идентификатора строки «‹ @ 0000> ». Кроме того, sendMessage устарел. Используйте channel.send(). В случае пользователя:

let str = "<@123456789>"; //Just assuming some random tag.

//removing any sign of < @ ! >... 
//the exclamation symbol comes if the user has a nickname on the server.
let id = str.replace(/[<@!>]/g, '');

client.fetchUser(id)
    .then(user => {user.send("Hello I dmed you!")})
person Wright    schedule 06.08.2017

Я бы не стал так писать, если только у вас для этого нет особой причины.

Я использовал веб-перехватчики с git для разногласий, использовал хэштеги для связи по частному каналу (и создавал каналы dm), поэтому я могу добавить правила для удаления / исключения (для администраторов или иным образом)

(Это не применимо к Facebook, если вам нужна интеграция с Facebook)

person kbrackson    schedule 05.08.2017
comment
(вам не нужны рабочие знания python или php, в этом случае вы можете писать веб-перехватчики с узлом), и поэтому я бы написал пользователей с идентификатором вместо строки, вам не нужен bool, хотя, очевидно, это зависит от вас, этот метод будет проще для вашего мозга позже, потому что вы можете указать, бот это или человек, и найти любой хэштег (канал), бота или пользователя позже. - person kbrackson; 05.08.2017
comment
Итак, мне нужно использовать веб-перехватчики? Могу ли я получить образец кода хэштега? - person ricola; 06.08.2017
comment
Эта статья лучше всего описывает метод и дает краткое изложение его использования. Для меня это проще в использовании, чем формат строки Discord, и я думаю, что он может пригодиться, когда дело доходит до устаревания и обновлений. Единственная причина, по которой я знаю об этом, состоит в том, что я хотел интегрировать Slack, и именно так я это сделал. support.discordapp.com/hc/en-us/ article / ** Обратите внимание, что вы можете интегрировать веб-перехватчики в Discord без git, хотя в этом руководстве вы это делаете. Я бы не сказал, что в любом случае лучше или хуже, у обоих, конечно же, есть свои преимущества и недостатки. :) - person kbrackson; 06.08.2017