如何解决如何为电报bot的python代码添加标志?
我想要一个可以改变机器人答案的标志。这是我的代码:
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”,然后他们可以在标志phills_adding_state现在为真时键入药品的名称。但是代码无法按预期工作。
不幸的是,更改变量“ pills_adding_state”不会影响我的机器人的行为。我做错了什么?谢谢。
解决方法
- 这是一种非常糟糕的方法,P租赁不像这样的全局变量!这意味着,您可以输入/ add,然后有人可以输入药品名称,或者两个人可以一个人/另一个地输入/ add,然后地狱将失败,它的坏处。
- 您应该使用global标记来引用全局(有关here的更多信息)。
- 您从未将
pills_adding_state
设置为False
,因此您的命令将是一次性的。 -
elif pills_adding_state ==True:
是多余的,因为pills_adding_state
是True
,因此if块将运行,elif pills_adding_state:
做得很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。