@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)
任何用户都可以询问 bot1 是否在线(通过说“check”),bot1 会依次发送一条类似于上面代码中的消息(...f"<@{my_user_id}>" in message.content )我的机器人(bot2)正在监听。
我需要 bot2 跳过那些按需检查,并且仅在 bot1 发送消息 (...f" 时回答 (<@{my_user_id2}>...send_delayed_msg(message.channel, f" im here", 1.91) ) <@{my_user_id}>” in message.content) 本身,而不是当其他玩家手动检查时。
即使用户调用“check”请求,上面的代码也会 100% 地响应 bot1 ping 我的情况。
抱歉,如果我没有正确表达自己的意思。这是我的第一个 python/编码项目。
谢谢!
这并不完美,但我会尝试将其放入您的机器人的上下文中,希望它能按照您的意愿工作。
@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 项消息的列表,并检查最后一条消息,这将是用户执行的检查命令(在本例中为!checkstatus)。如果没有此消息,则检查是自动的,您可以回复。有任何问题请留言!