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

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

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

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

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

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

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

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!")})

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

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

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

Другие вопросы по тегам