我在Discord.js上为个人服务器运行了一个discord机器人,它旨在对某些短语(早安,晚安等)做出反应,并显示一条消息,并从数组中提取随机表情符号。 / p>
我的问题特别是与此有关:[“?”,“?”,“?”,“⚰️”,“?”,“?”];
不幸的是,该机器人似乎只对某些指定的表情符号作出反应,而其他机器人在控制台中返回“ DiscordAPIError:Unknown Emoji”错误。
例如,机器人将与react反应,但尝试与⚰️反应将返回错误,并且机器人不反应。我已经确保只使用默认的unicode表情符号,但是这种情况一直在发生。
编辑:
此数组专门用于万圣节主题反应:
halreactoptions = ["?", "?", "?", "⚰️", "?", "?"];
halreactrandom = halreactoptions[Math.floor(Math.random()*halreactoptions.length)];
然后在机器人的消息代码末尾,我得到:
message.react(halreactrandom);
这对于我的其他表情符号数组来说效果很好,似乎那些万圣节主题主题的字符串是唯一返回未知表情符号错误的字符串,甚至还返回特定的表情符号错误。很奇怪。如果重要/有帮助的话,我已经完全用Atom编写了代码。
答案 0 :(得分:0)
我认为这可能与您发现的Unicode表情符号有关。我已经测试并尝试对您提供的表情符号列表做出反应,实际上只有棺材表情符号(⚰️)似乎无法正常工作,而其他一切都可以正常工作。
经过仔细检查,您在这种情况下提供的棺材表情符号与通过转义表情符号在Discord中获得的棺材表情符号并不完全相同(在表情符号前面添加\
以查看unicode版本,在这种情况下为\:coffin:
)。
您提供的表情符号实际上是带有其他变体选择器的变体形式(更多信息here和here),因此,当您尝试发送它时,它不会被识别。
不和谐表情符号(⚰)仅具有以下字节:0xEA 0x9A 0xB0
,而您的表情符号(⚰️)具有以下字节:0xEA 0x9A 0xB0 0xEF 0xB8 0x8F
。
这也可以从简单的长度比较中看出,前者的长度仅为1,而后者的长度为2。
因此,如果您使用长度为1⚰的较短表情符号,则该反应应该起作用。