如何让机器人只对**一个**特定表情做出反应?

2024-10-01 09:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个十足的初学者。因此,机器人应该理解(显示为消息“ThumbUp/ThumbDown”),用户已经对已经存在的反应做出了反应。我的问题是,若我对这两种反应中的一种作出反应,两条消息都会被发送出去,所以我认为我需要以某种方式将它们分开。有人能帮我吗

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

            reaction == get(message.reactions, emoji='👍')
            if reaction.count > 1:
                    await message.channel.send('ThumbUp')
                    await helpmessage.delete()
            else:
                    await asyncio.sleep(30)
                    await helpmessage.delete()

            reaction == get(message.reactions, emoji='👎')
            if reaction.count > 1:
                    await message.channel.send('ThumbDown')
                    await helpmessage.delete()
            else:
                    await asyncio.sleep(30)
                    await helpmessage.delete()

Tags: send消息messagegetifcountchannelawait
2条回答

有两种方法:

  1. 使用else:
@client.event
async def on_reaction_add(reaction, user):
    reaction = get(message.reactions, emoji='👍')
    if reaction.count > 1:
        await message.channel.send('ThumbUp')
    else:
        reaction = get(message.reactions, emoji='👎')
        if reaction.count > 1:
            await message.channel.send('ThumbDown')
        else:
            await asyncio.sleep(30)

    await helpmessage.delete()
  1. 使用字典:
@client.event
async def on_reaction_add(reaction, user):
    checks = {'👍': 'ThumbUp', '👎': 'ThumbDown'}
    for emoji, msg in checks.items():
        reaction = get(message.reactions, emoji=emoji)
        if reaction.count > 1:
            await message.channel.send(msg)
            break
    else:
        await asyncio.sleep(30)

    await helpmessage.delete()

似乎修复程序正在行中添加第二个=,其中reaction被确定。所以它是 reaction == get(helpmessage.reactions, emoji="👍")

相关问题 更多 >