无法从反应中读取标准表情符号名称 [discord.js]

时间:2021-05-26 14:18:11

标签: javascript node.js json discord.js

嘿,我在做一个机器人,我需要从反应中获取表情符号的名称。我现在用 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]
},

1 个答案:

答案 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 发送。