discord.py emoji 所有服务器机器人

Posted

技术标签:

【中文标题】discord.py emoji 所有服务器机器人【英文标题】:discord.py emoji all servers bot in 【发布时间】:2020-06-26 10:14:21 【问题描述】:

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

使用:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

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

【讨论】:

【参考方案2】:

是的,这是 necroposting,但这可能对任何寻找答案的人有所帮助。

@client.command()
async def emoji(ctx, emojiname):
    for i in client.guilds:
        emoji = discord.utils.get(i.emojis, name=emojiname)

当然,您必须将表情符号的名称作为第一个参数传递。

【讨论】:

以上是关于discord.py emoji 所有服务器机器人的主要内容,如果未能解决你的问题,请参考以下文章

discord.py :: 我怎样才能让我的机器人对它自己的消息做出反应?

Discord.py 计算对消息的反应

Discord.py 反应角色和 DMing 反应堆

如何让 Discord.py 机器人向服务器所有者发送消息?

如何使用 discord.py 制作一个检查某个服务器通道中所有消息的机器人

((Discord.py)向所有服务器的所有成员发送dm或]