#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:
Как было решено в комментариях, идентификатор смайлика был недействительным — смайлик был на другом сервере.
Всегда проверяйте отладку, когда получаете ошибки такого типа.