python-3.x 如何让我的discord.py机器人使用自定义表情符号?

4dc9hkyq  于 2022-12-20  发布在  Python
关注(0)|答案(4)|浏览(132)

如何让我的机器人在任何discord服务器上使用我的自定义表情符号?

@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:

z31licg0

z31licg01#

https://github.com/Rapptz/discord.py/issues/390开始:
自定义表情符号是<:emoji_name:emoji_id>
您还可以通过Server.emojis找到discord.emoji示例,然后将其强制转换为str。

yh2wf1be

yh2wf1be2#

同样对于动画,您可以执行<a:emoji_name:emoji_id>

ogsagwnx

ogsagwnx3#

我们知道,每个discord bot在使用表情符号时都有硝基权限。所以一个bot可以访问它所添加到的所有服务器上的任何表情符号。我所做的是用一个全局表情符号字典为自己做一个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)
368yc8dk

368yc8dk4#

@bot.event
async def on_reaction_add(reaction, user):

    if reaction.emoji.id == emoji_id:
        await reaction.message.delete()

重要提示:更改emoji_id,它会删除消息

相关问题