【问题标题】:How do I make my discord.py bot use custom emoji?如何让我的 discord.py 机器人使用自定义表情符号?
【发布时间】:2019-01-29 15:45:18
【问题描述】:

如何让我的机器人在任何不和谐服务器中使用我的自定义表情符号?

@bot.command(pass_context=True)
async def ping(ctx):
    msg = "Pong :CustomEmoji: {0.author.mention}".format(ctx.message)
    await bot.say(msg)

示例: 如果我在服务器 1 上上传了一些自定义表情符号,并且当我们在服务器 2 或服务器 3 或机器人可以访问的任何服务器中使用!ping 命令(如上所述)时,它应该使用自定义表情符号。

结果:Pong with :CustomEmoji:

【问题讨论】:

  • 查看我的回答 here,了解如何使用他们的名字获取自定义表情符号的示例。
  • @PatrickHaugh 您在该链接中的回答是添加反应?
  • 是的,但相关部分是使用表情符号的名称来获取discord.Emoji 对象。然后你可以很容易地"Pong {1}: {0.author.mention}".format(ctx.message, emoji)
  • @PatrickHaugh 是否有任何选项可以获取动画的表情符号 ID?
  • 只要写一个带有表情符号的命令:@bot.command() async def getemoji(emoji: discord.Emoji): print(emoji.id)

标签: python python-3.x discord discord.py


【解决方案1】:

我们知道,每个 Discord 机器人在使用表情时都拥有 nitro 特权。因此,机器人可以访问已添加到的所有服务器的任何表情符号。我所做的是使用全局表情字典为自己制作一个 API 转换器。

emojis=None

@bot.command(pass_context=True)
async def ping(ctx):
    global emojis
    if not emojis:
        emojis = {e.name:str(e) for e in ctx.bot.emojis}
    msg = "Pong :CustomEmoji: {0.author.mention}".format(ctx.message).replace(':CustomEmoji:',emojis['CustomEmoji'])
    await ctx.send(msg)

【讨论】:

    【解决方案2】:

    也适用于你做的动画<a:emoji_name:emoji_id>

    【讨论】:

    • 我相信这应该是对@Moorhuhn 回答的评论
    【解决方案3】:

    来自https://github.com/Rapptz/discord.py/issues/390

    自定义表情符号是 <:emoji_name:emoji_id>

    您还可以通过 Server.emojis 找到 discord.Emoji 实例和 然后将其转换为 str。

    【讨论】:

    • 如果你很懒,想为你的表情符号自动获取格式化版本的<:emoji_name:emoji_id>,进入Discord并打开输入\:YourEmoji:(一定要用你的名字替换“YourEmoji表情符号!)Discord 将自动为您的表情符号返回格式化版本的<:emoji_name:emoji_id>。来源:github.com/Rapptz/discord.py/issues/390#issuecomment-625929794
    猜你喜欢
    • 2021-03-25
    • 2021-04-28
    • 2021-03-21
    • 2018-08-05
    • 2021-10-04
    • 2020-09-23
    • 2021-11-23
    • 2021-08-09
    • 2020-08-06
    相关资源
    最近更新 更多