添加特定 unicode 表情时,Discord.js message.react 失败

Posted

技术标签:

【中文标题】添加特定 unicode 表情时,Discord.js message.react 失败【英文标题】:Discord.js message.react fails when adding specific unicode emotes 【发布时间】:2018-08-19 22:14:20 【问题描述】:

昨天我开始使用 discord.js 中的指南编写一个机器人。 The core 就是您完成命令处理程序部分的内容。 我正在处理一个投票命令,机器人会在其中对 Unicode 符号做出反应,例如 :one: :two: :three:. 这是我遇到问题的地方。使用:

module.exports = 
name: 'testing',
description: 'creates a reaction',
aliases: ['test'],
cooldown: 1,
execute(message, args) 
    if (!args.length) 
        message.react(':one:');
          

; 给我一个DiscordAPIError: Unknown Emoji

我花了一些时间尝试不同的表情,比如????他们正在按预期工作。使用表情 ID (422515569623957504) 对我来说效果不佳。

这是我的错误还是错误?

【问题讨论】:

也看看unicode problems with emojis 【参考方案1】:

在 Discord.js 中,要使用表情符号对消息做出反应,您需要编写表情符号(使用 ? 或 ?,完整列表 here)或使用 Emoji。 要对数字做出反应,您可以使用以下命令:

0⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣?

只需复制您需要的号码即可。 要使用自定义表情符号对消息做出反应,您需要执行以下操作:

message.react(message.guild.emojis.get('123456789012345678'))
  .then(console.log)
  .catch(console.error);

注意:机器人可以使用来自所有服务器(如 Nitro)的表情符号。 client.emojis 返回机器人可以使用的所有表情符号的集合,client.emojis.get('id') 从另一台服务器获取表情符号。

【讨论】:

我昨天和我服务器的另一个程序员一起工作。你建议的第一件事不起作用。但我会尝试第二个。我们找到了另一种方法:对于 :one: 可以使用 '\u0031\u20E3'。出于某种原因,此表情符号的 Unicode 无法正常工作。如果您要求 discord 显示转义版本,它只会给您 :one: 结果。无论如何感谢您的建议,我会在测试后支持它 截至 2019 年,这确实有效。一个非常容易犯的错误是在复制粘贴时留出一个空格,因为它们有奇怪的重叠。否则将导致DiscordAPIError: Unknown Emoji

以上是关于添加特定 unicode 表情时,Discord.js message.react 失败的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js:只有一种反应

如何在调用函数时使用 discord.py 添加反应?

是否有特定范围的 unicode 代码点可以检查表情符号?

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

Discord JDA 在 GuildJoin 上添加自定义表情

Discord.py 机器人不响应自定义表情符号