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

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

使用:

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

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

【问题讨论】:

    标签: python discord discord.py discord.py-rewrite


    【解决方案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)
      

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

      【讨论】:

        猜你喜欢
        • 2021-03-19
        • 2019-05-07
        • 2021-09-24
        • 2020-10-26
        • 2021-07-09
        • 2020-11-19
        • 2021-04-13
        • 2021-05-03
        • 2021-02-13
        相关资源
        最近更新 更多