繁体   English   中英

如何为电报机器人的python代码添加一个标志?

[英]How to add a flag to my python code for telegram bot?

我想要一个标志来改变我的机器人的答案。 这是我的代码:

import config
import telebot

bot = telebot.TeleBot(config.token)
pills_adding_state = False

@bot.message_handler(commands=['start'])
def handle_start_message(message):
    bot.send_message(message.chat.id, "Hi. I will help you remember all the medicine you need to take. Type add to add a medicine to your list")

@bot.message_handler(content_types = ["text"])
def handle_list_of_pills_message(message):
    
    if message.text == "/add":
        pills_adding_state = True
        bot.send_message(message.chat.id,"Type the medicine name")
    elif pills_adding_state ==True:
        bot.send_message(message.chat.id,"medicine {} added".format(message.text))

if __name__ == '__main__':
     bot.polling(none_stop=True)

我编辑了我的代码片段以使其更清晰一些。 目标是:用户输入“/add”,然后只要标志药丸添加状态现在为真,他们就可以输入药物的名称。 但是代码没有按预期工作。

不幸的是,更改变量“pills_adding_state”不会影响我的机器人的行为。 我做错了什么? 谢谢你。

  1. 这是一种非常糟糕的方式,请不要使用这样的全局变量!,这意味着,您可以输入 /add 并且有人可以输入药物名称,或者两个人可以一个接一个地输入 /add 并且地狱会输, 这不好。
  2. 您应该使用 global 标签来引用一个全局(更多关于这里)。
  3. 您永远不会将pills_adding_state添加状态设置为False ,因此您的命令将是一次性使用。
  4. elif pills_adding_state ==True:是多余的,因为很好,因为pills_adding_stateTrue ,if 块将运行, elif pills_adding_state:做得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM