为了账号安全,请及时绑定邮箱和手机立即绑定

在 telebot @bot.message_handler() 中运行,即使它保存在 if 语句中

在 telebot @bot.message_handler() 中运行,即使它保存在 if 语句中

慕田峪9158850 2023-08-08 10:27:28
我对编码和 python 比较陌生。我正在尝试使用远程机器人制作一个电报机器人。我有一个必须去的流程。例如:/start 之后,我应该收到一条短信。因此,我创建了一个 running_work_list,其中按顺序排列我的工作流程,完成后,我删除索引 0 元素。'start' 是数组中的第一个元素。所以我尝试实现这样的东西,这样我就可以轻松地编写每个步骤,而不是查看输入并做出决定。但是,尽管放入了 if 语句,即使条件失败,“@bot.message_handler()”也会运行。    if running_work_list[0]=='start':        print('inside if')        @bot.message_handler(commands=['start','new test'])        def start(message):            print('user sent start')            bot.send_message(message.chat.id,welcome_message)            running_work_list.pop(0)            print(f'work flow deciding list {running_work_list}')        @bot.message_handler(content_types=['text','photo','poll'])        def bot_intro(message):            print('here')            print(f'user sent {message.text}')            bot.send_message(message.chat.id,BOT_INTRO_MSG)以下是我得到的输出。用户首先发送了 /start,然后发送了一些其他随机文本。    inside if    user sent start    work flow deciding list ['test_name', 'test_description', 'test_time', 'test_image', 'test_poll']    here    user sent fdf即使我们将“@bot.message_handler()”放在 if 语句中,它也会运行吗?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

执行@bot.message_handler装饰器会标记当消息与您作为参数(content_typescommands)传递的过滤器匹配时要调用的函数。它们由库直接调用,注册后telebot不执行语句。if

正确的方法是颠倒逻辑:在程序的顶层定义消息处理函数,并决定在函数内应该做什么if


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信