无法从反应中读取标准表情符号名称 [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.js 的属性“名称”尝试读取 json 中的数组
如何在 discord.js 中获取消息中某个表情符号反应的计数