电视马拉松比赛中存在的问题及对策

2024-09-30 20:23:13 发布

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

这是我的密码。 注意nots(数字)

@bot.on(events.NewMessage(pattern="test")) # 1
async def wait(event):
    chat = event.chat_id
    txw = "some text" 
    await bot.send_message(chat, txw, buttons = [Button.inline("help", b"help")]) # 2
    bot.on(events.NewMessage(chats = chat)) #3
    async def get(event):
        txt = event.raw_text #4
        bot.remove_event_handler(get) # 6
        if not len(txt) == 10:
            await event.reply("false information") # 5
        if len(txt) == 10:
            await event.reply("created seccessfuly")

1正在接收消息(测试),2安全发送消息。但问题是3,4,5。3获取消息(test),但我只想1获取测试消息,3获取另一条消息,然后在获取带有10 len的消息后删除处理程序


Tags: texttesttxtevent消息asynclenon
1条回答
网友
1楼 · 发布于 2024-09-30 20:23:13

事件按顺序处理,因此在第一个事件完成运行后,它将运行您刚刚创建的第二个事件(get事件)。您可以将get(事件)中的if检查添加到此特殊情况

@bot.on(events.NewMessage(pattern="test")) # 1
async def wait(event1):
    chat = event1.chat_id
    txw = "some text" 
    await bot.send_message(chat, txw, buttons = [Button.inline("help", b"help")]) # 2
    bot.on(events.NewMessage(chats = chat)) #3
    async def get(event2):
        if event2.id == event1.id:
             # this means that we are treating the message we got from event1.
             return
        txt = event2.raw_text #4
        bot.remove_event_handler(get) # 6
        if not len(txt) == 10:
            await event.reply("false information") # 5
        if len(txt) == 10:
            await event.reply("created seccessfuly")

相关问题 更多 >