Javascript 表情符号必须是字符串或GuildEmoji/ReactionEmoji错误,同时尝试使bot使用自定义表情进行反应

Javascript 表情符号必须是字符串或GuildEmoji/ReactionEmoji错误,同时尝试使bot使用自定义表情进行反应,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,在过去的几天里,我一直在尝试制作一个命令,在这个命令中,它会对带有自定义表情的消息做出反应。它在控制台中给了我一个错误: TypeError [EMOJI_TYPE]: Emoji must be a string or GuildEmoji/ReactionEmoji at Message.react (E:\Projects\DiscordBots\node_modules\discord.js\src\structures\Message.js:546:23) at Cli

在过去的几天里,我一直在尝试制作一个命令,在这个命令中,它会对带有自定义表情的消息做出反应。它在控制台中给了我一个错误:

TypeError [EMOJI_TYPE]: Emoji must be a string or GuildEmoji/ReactionEmoji
    at Message.react (E:\Projects\DiscordBots\node_modules\discord.js\src\structures\Message.js:546:23)
    at Client.<anonymous> (E:\Projects\DiscordBots\LordMoth\moth.js:98:17)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (E:\Projects\DiscordBots\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (E:\Projects\DiscordBots\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (E:\Projects\DiscordBots\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (E:\Projects\DiscordBots\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (E:\Projects\DiscordBots\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (E:\Projects\DiscordBots\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:315:20) {
  [Symbol(code)]: 'EMOJI_TYPE'
}
另外一个解决方案是我尝试使用discord.js文档()中的emote ID:


我很困惑。请帮助我。

确保表情符号名称正确无误。别忘了它是区分大小写的。尝试检查
mfi
的值,仅当消息未定义时才对其作出反应:

client.on('message',(message)=>{
如果(message.content==='ok'){
const mfi=message.guild.emojis.cache.find((emoji)=>emoji.name=='MOTHIFEST');
中频(mfi){
消息.反应(mfi);
}
}
});
As
message.react
返回一个承诺,您也可以使用
catch
捕获任何错误:

const mfi=message.guild.emojis.cache.find((emoji)=>emoji.name=='MOTHIFEST');
消息
.反应(mfi)
.然后(()=>console.log('Reaction sent'))
.catch((err)=>console.log(`Oops,出现错误${err}`);
您还可以使用以下示例记录表情符号名称和ID的列表,以便查看您要查找的表情符号是否存在:

message.guild.emojis.cache.each((e)=>console.log(${e.id}:${e.name}))

你试过记录
mfi
的值吗?@ZsoltMeszaros我刚试过,但它仍然给我同样的错误。嗯,是的,你应该注释掉message.react(mfi)然后:)你也可以使用以下内容记录表情符号名称和id的列表:
message.guild.emojis.cache.each((e)=>console.log(
${e.id}:${e.name}
,这样您就可以查看您要查找的文件是否存在。
client.on("message", message => {
    if (message.content === "ok") {
        const mfi = message.guild.emojis.cache.find(emoji => emoji.name === "MOTHIFEST");
        message.react(mfi);
    }
});
client.on("message", message => {
    if (message.content === "ok") {
        message.react(message.guild.emojis.cache.get("824436212034830356"));
          .then(console.log)
          .catch(console.error);
    }
});