python-3.x 跳过回复不一致的消息,如果说消息是由前一个

h7appiyu  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(90)
@client.event
async def on_message(message):
      if message.guild.id in svrs:
          if message.author.id == (int(bot1)) and f"<@{my_user_id}>" in message.content:
            await send_delayed_msg(message.channel, f"<@{my_user_id2}> im here", 1.91)

字符串
任何用户都可以问bot 1我是否在线(通过说“check”),bot 1反过来会发送一条类似于上面代码中的消息(...f“<@{my_user_id}>”in message.content),我的bot(bot 2)正在监听。
我需要bot 2跳过那些按需检查,只在bot 1自己发送消息(... f”<@{my_user_id}>”in message.content)时回答(.. send_delayed_msg(message.channel,f”<@{my_user_id2}> im here”,1.91)),而不是在其他玩家手动检查时回答。
上面的代码将在bot 1 ping我的时候100%响应,即使用户调用“check”请求。
抱歉,如果我表达得不恰当。这是我的第一个Python/Coding项目。
谢谢你,谢谢

yks3o0rb

yks3o0rb1#

这并不完美,但我会尝试把它放到你的机器人的上下文中,希望它能像你想的那样工作。

@client.event
async def on_message(message):
    if message.guild.id in svrs:
        if message.author.id == (int(bot1)) and f"<@{my_user_id}>" in message.content:
            message_iter = message.channel.history(limit=2)
            messages = [msg async for msg in message_iter]
            if '!checkstatus' not in messages[1]:  # check message before bot ping for command
                # was not triggered by user so send response
                await send_delayed_msg(message.channel, f"<@{my_user_id2}> im here", 1.91)

字符串
本质上,它只是在通道中创建一个2项消息列表,并检查最后一条消息,这将是用户执行的检查命令(!在这个例子中检查状态)。如果此消息不存在,则检查是自动的,您可以回复。留下评论是你有任何问题!

相关问题