首页 > 解决方案 > Discord Bot Python 如何连接表情符号

问题描述

@bot.command()
async def bar(ctx,number:int):
    text=""
    emoji = get(bot.emojis, name='emojiname')
    for i in range(number):
        text=text+"<:"+str(emoji.name)+":"+str(emoji.id)+">"
    await ctx.send(text)

这是返回 :emojiname::emojiname::emojiname:... :emojiname: 您指定的数量但不返回几个表情符号,所以我想知道是否有任何方法可以在不和谐 python 上连接表情符号。

标签: pythonconcatenationdiscord

解决方案


TLDR

要连接不和谐的 Emoji 对象,您可以使用:

# emoji1: discord.Emoji 
# emoji2: discord.Emoji
two_emoji_msg = str(emoji1) + str(emoji2)

在您的情况下,代码变为:

@bot.command()
async def bar(ctx, number: int):
    text = ""
    emoji = get(bot.emojis, name='emojiname')
    for i in range(number):
        text += str(emoji)
    await ctx.send(text)

虽然我建议text = str(emoji) * number在这种情况下使用。

解释

discord.Emoji没有__add__方法。这意味着您不能discord.Emoji直接连接实例(即emoji1 + emoji2不可能),但它确实有一个__str__方法可以返回有效的不和谐表情符号字符串表示,然后连接该字符串。您还可以格式化名称和 ID "<:{emoji.name}:{emoji.id}>",这对于动画表情符号不起作用,因为它们的表示以<a:not <:(即"<a:{emoji.name}:{emoji.id}>")开头


PS我不完全理解你的问题,所以纠正我,如果这不是你的意思。


推荐阅读