首页 > 解决方案 > discord.py emoji 所有服务器机器人

问题描述

我有一个机器人,它发送包含特定于每个嵌入的表情符号的嵌入,它在我上传表情符号的测试服务器上运行良好,但它们不会出现在其他服务器上,因为这些服务器没有自定义表情符号。

使用:

emoji = get(ctx.message.guild.emojis, name='emojinamehere')

当然适用于它所在的服务器,但有没有办法从机器人所在的任何服务器获取和使用所有表情符号?

标签: pythondiscorddiscord.pydiscord.py-rewrite

解决方案


因为您专门使用ctx.message.guild.emojisaka 您正试图从上下文行会(可能没有它)中获取表情符号。

您可以摆脱get按名称查找,只需使用bot.get_emoji(),其中 bot 是您的机器人/客户端对象。

您的机器人会将来自所有公会的所有表情符号存储在内部缓存中,并get_emoji()从那里检索它,以便它适用于所有公会。

您将需要表情符号 ID(整数)来执行此操作,而不是您当前获得的名称。您可以按名称获取,然后获取其 ID,但这只是不必要的步骤。

只需使用表情符号 ID,因为它们是唯一的且无法更改(名称既可以重复也可以更改,因此您可能会遇到按名称获取的问题)。

您可以使用 Discord 客户端应用快速获取 emoji ID:

  • 在文本框输入中输入自定义表情符号
  • \在表情符号之前输入
  • 发送消息聊天
  • 消息会变成类似的东西<:emoji_name:emoji_id>

推荐阅读