问题描述
这是我的代码。 注意nots(numbers)
@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 获取消息(测试),但我只想获取 1 条测试消息,3 条获取另一条消息,然后在使用 10 len 获取消息后删除处理程序。
解决方法
事件按顺序处理,因此在第一个事件完成运行后,它将运行您刚刚创建的第二个事件(get 事件)。您可以在 get(event) 中添加 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")