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

Posted

技术标签:

【中文标题】无法从反应中读取标准表情符号名称 [discord.js]【英文标题】:Unable to read standard emoji name from reaction [discord.js] 【发布时间】:2021-08-14 19:25:59 【问题描述】:

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

【问题讨论】:

很可能名称是他们使用的一些内部编码,没有相应的 unicode 字符,因此是占位符 所以这个值是不能从控制台读取的? 您是否尝试过直接记录 .name 属性?提到discord.js.org/#/docs/main/stable/class/ReactionEmoji,您似乎在做正确的事情 另外,请参阅对***.com/a/53102716/78248 的响应,您可能尚未缓存该值 是的,我从名字中得到 【参考方案1】:

不幸的是,没有直接的方法来获取内置不和谐表情符号的名称。 Discord 使用 Twemoji 并且仅通过 ID 引用它们。因此,您必须以某种方式将 Emoji 的 Unicode 映射到实际的 emoji 名称。

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

【讨论】:

以上是关于无法从反应中读取标准表情符号名称 [discord.js]的主要内容,如果未能解决你的问题,请参考以下文章

对表情符号 discord.py 做出反应时添加角色

无法读取未定义 discord.js 的属性“名称”尝试读取 json 中的数组

如何在 discord.js 中获取消息中某个表情符号反应的计数

Discord bot 添加对消息 discord.py 的反应(无自定义表情符号)

收到表情符号反应后的 Discord.js 消息

如何在 Discord.js 中按名称查找表情符号