如何让我的机器人在任何不和谐服务器中使用我的自定义表情符号?
@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:
来自https://github.com/Rapptz/discord.py/issues/390:
这是
用于自定义表情符号。<:emoji_name:emoji_id>
您还可以通过Server.emojis找到discord.Emoji实例, 然后将其投射到 str。
也适用于您所做的动画
<a:emoji_name:emoji_id>
首先,您需要将表情符号添加到您的(在机器人可以访问的服务器上)服务器。 添加后,输入表情符号名称,例如 ->“:myemoji:” 在表情符号之前输入一个反斜杠 ->(此处为反斜杠):myemoji: 并发送消息。 当你发送消息时,你可能会看到这样的东西 -> “<:bahn:874911228361854996>”,你可以直接在机器人消息中使用它 示例:
await ctx.send(" my custom emoji <:bahn:874911228361854996>")
众所周知,每个不和谐机器人在使用表情时都拥有硝基特权。因此,机器人可以访问它已添加到的所有服务器的任何表情符号。我所做的就是使用全局表情字典为自己制作一个 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)
@bot.event
async def on_reaction_add(reaction, user):
if reaction.emoji.id == emoji_id:
await reaction.message.delete()
重要提示:更改 emoji_id,它会删除消息