首页 > 解决方案 > on_message 等待用户对消息做出反应或超时,然后机器人再次发送另一条带有反应的消息

问题描述

如果你 DM 机器人,它会发送一条消息并添加一些反应,然后它会等待用户添加反应,然后再做某事。

我的问题是,如果用户再次 DM 机器人,它会发送另一条消息,如果用户对任何机器人消息做出反应,机器人会根据你从机器人收到的消息数量做两次或更多的事情。

如果当前有一条带有反应的消息,是否有办法让机器人不发送另一条消息,并等待用户先做出反应,然后机器人才能再次发送另一条带有反应的消息?谢谢。

async def on_message(self, message):
    if message.author.bot:
        return

    if isinstance(message.channel, discord.DMChannel):
        dm = await message.channel.send('test')
        await dm.add_reaction("1️⃣")
   
    def check(reaction, user):
        return user == message.author and str(reaction.emoji) in ["1️⃣"]

    while True:
        try:
            reaction, user = await self.client.wait_for("reaction_add", timeout=15, check=check)
            if str(reaction.emoji) == "1️⃣":
                # do something here
 
        except asyncio.TimeoutError:
            await dm.delete()
            break

标签: pythondiscord.py

解决方案


通过为每条消息建立一个数据库来修复它。感谢那些试图提供帮助的人!


推荐阅读