嘿,我在做一个机器人,我需要从反应中获取表情符号的名称。我现在用 console.log ()
做到了,但我很惊讶,因为我得到了某种奇怪的徽章而不是表情符号名称。
我收到了新闻的表情符号 ? :tada:
,我期待以这个表情符号的名义出现这样的事情。同时,我收到了这样的东西�。这是我的问题还是我做错了什么?请帮忙。
//------------------------------
? index.js
//------------------------------
client.on('messageReactionAdd', async (reaction) => {
console.log(reaction.emoji.reaction)
})
//------------------------------
Below console output
//------------------------------
_emoji: ReactionEmoji {
animated: undefined,
name: '�',
id: null,
deleted: false,
reaction: [Circular]
},
答案 0 :(得分:1)
不幸的是,没有直接的方法可以获取内置不和谐表情符号的名称。
Discord 使用 Twemoji 并且仅通过 ID 引用它们。因此,您必须以某种方式将表情符号的 Unicode 映射到实际的表情符号名称。
有诸如 emoji-dictionary 之类的库可以帮助解决这个问题:
let emojiDic = require("emoji-dictionary");
// ...
client.on("messageReactionAdd", async(reaction) => {
console.log(emojiDic.getName(reaction.emoji.toString()));
// -> "tada"
});
注意:您不能在不和谐的情况下重复使用该名称。例如,此代码将不工作:
message.channel.send(":" + emojiDic.getName(reaction.emoji.toString()) + ":");
您必须直接通过 Unicode 发送,或者通过 Emoji's ID 发送。