我有一个机器人,它发送包含每个嵌入特定表情符号的嵌入,并且在我上传了表情的测试服务器上效果很好,但是由于这些服务器没有自定义表情,因此它们不会显示在其他服务器上
使用:
emoji = get(ctx.message.guild.emojis, name='emojinamehere')
它可以在其中使用的服务器上正常工作,但是有没有办法从该机器人所在的任何服务器上获取和使用所有表情符号?
答案 0 :(得分:1)
因为您专门使用ctx.message.guild.emojis
,所以您正试图从上下文公会(可能没有)中获取表情符号。
您可以摆脱get
的名称查找,而只需使用bot.get_emoji(),其中bot是您的bot/client对象。
您的机器人会将所有公会的所有表情符号存储在内部缓存中,get_emoji()
将从那里取回它,以便它适用于所有公会。
您将需要表情符号ID(整数)来执行此操作,而不是按照您当前的名字命名。您可以按名称获取,然后获取其ID,但这只是不必要的步骤。
只需使用表情符号ID,因为它们是唯一的并且不能更改(名称可以重复并且可以更改,因此您在按名称获取时会遇到麻烦)。
您可以使用Discord客户端应用程序快速获取表情符号ID:
\
<:emoji_name:emoji_id>
答案 1 :(得分:1)
是的,这是尸检,但这可能对任何寻找答案的人都有帮助。
@client.command()
async def emoji(ctx, emojiname):
for i in client.guilds:
emoji = discord.utils.get(i.emojis, name=emojiname)
当然,您必须将表情符号的名称作为第一个参数传递。