Мой discord.js у бота возникают проблемы с реакцией на сообщения, содержащие определенную строку

#javascript #node.js #bots #discord.js

#javascript #node.js #боты #discord.js

Вопрос:

Я настраиваю бота discord, который запускается node.js , и я хочу, чтобы он реагировал на любое сообщение, содержащее слово «чад», с помощью специальной эмоции. Инициализация бота работает нормально. Вот текущий код:

 if(message.content === "chad"){
    message.react(message.guild.emojis.get('536738717893656587'))
  }
  

когда кто-то говорит «чад», я получаю сообщение об ошибке

 (node:16724) UnhandledPromiseRejectionWarning: TypeError: Emoji must be a string or Emoji/ReactionEmoji
  

это странно для меня, потому что у меня есть аналогичная функция несколькими строками выше, которая

 if(message.content.indexOf("longtail") >= 0){
      message.react(message.guild.emojis.get('549871163468152832'))
  }
  

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

Комментарии:

1. вы пробовали message.react('536738717893656587') и уверены, что идентификатор правильный? также попробуйте message.react(message.guild.emojis.find('name', 'nameofyouremoji'));

2. я пробовал message.react('536738717893656587') , и я уверен, что идентификатор правильный. Я попробовал message.react(message.guild.emojis.find('name', 'really')); , и это выдало мне ошибку (node:4764) DeprecationWarning: Collection#find: pass a function instead (node:4764) UnhandledPromiseRejectionWarning: TypeError: Emoji must be a string or Emoji/ReactionEmoji

3. Ошибка устаревания — это просто метод find, беспокоиться не о чем. Какое значение и тип message.guild.emojis.get('536738717893656587') точно возвращает? попробуйте var emoji = message.guild.emojis.get('536738717893656587'); console.log(typeof emoji, emoji)

4. возвращает «неопределенный неопределенный»

5. Похоже, что с идентификатором действительно что то не так. Попробуйте перечислить все идентификаторы эмодзи гильдии следующим образом: console.log(message.guild.emojis.map(e=>e.id)) (должно сработать, но я не могу проверить это сам)

Ответ №1:

Как было решено в комментариях, идентификатор смайлика был недействительным — смайлик был на другом сервере.

Всегда проверяйте отладку, когда получаете ошибки такого типа.