📅  最后修改于: 2023-12-03 14:45:57.517000             🧑  作者: Mango
Are you having issues with using emojis in your Python Discord bot? Specifically, are you noticing that your if == statement to check if a certain emoji was used is not working? Fear not, as we have a solution!
When you use an emoji in Discord, it is not treated as a string. Instead, it is treated as a discord.Emoji
object. Therefore, comparing it to a string using == would always result in False, as they are two different data types.
To properly compare a discord.Emoji
object, you need to use its id
attribute. This attribute returns the unique ID of the emoji, which you can compare to the ID of the emoji you are looking for.
Here's an example code snippet:
import discord
client = discord.Client()
@client.event
async def on_message(message):
target_emoji = '👍'
if str(message.content) == target_emoji:
# this will never be true, as message.content is a string and target_emoji is an emoji object
pass
if message.content == target_emoji:
# this will also never be true, for the reason described above
pass
for reaction in message.reactions:
if str(reaction) == target_emoji:
# this will check the string representation of the reaction, which includes the emoji itself
pass
if reaction.emoji.id == target_emoji.id:
# this will properly compare the IDs of the emojis
pass
The key line is if reaction.emoji.id == target_emoji.id
. This is what correctly compares the two emojis.
When working with emojis in your Python Discord bot, always remember that they are not strings, but rather discord.Emoji
objects. To properly compare them, you need to use their id
attribute. Implementing this knowledge should help you avoid the frustration of your if == statement not working.