微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Telethon 事件的问题并单独使用它们

如何解决Telethon 事件的问题并单独使用它们

这是我的代码。 注意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")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。