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);
}
}
});
Asmessage.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);
}
});