我的目的是使用pyTelegramBotAPI开发一个bot,其中内部状态'state'允许或禁止访问某些命令。
只有当命令为'plan'且'state'为0时,片段中的预期输出才是消息
我的代码:
导入telebot
TOKEN ='TOKEN'
tb = telebot.TeleBot(TOKEN)
state = 0
@ tb.message_handler(commands = ['plan'],func = lambda state:state == 0)
def planFunct(m):
idCon = m.chat.id
tb.send_message(idCon, 'El comando plan funciona.' + str(idCon))
tb.polling(none_stop = TRUE)
这个片段的结果是没有出路的。而且我无法识别问题是从错误使用过滤器,变量范围还是滥用lambda函数开始的。
我很感激帮助,这是我在堆栈溢出中的第一个问题。
此致
答案 0 :(得分:0)
问题的一个可能的解决方案是通过def使用一个通用函数,问题在于在应用过滤器'func'的语法时难以将参数传递给函数。
要使用该参数,我们将在函数内部分配其值,因为它具有获取它的范围。
我的代码:
import telebot
TOKEN = 'TOKEN'
tb = telebot.TeleBot(TOKEN)
satate = 0
def comprobarEstados(m):
m = state
if m == 0:
return True
@tb.message_handler(commands=['plan'], func=comprobarEstados)
def planFunct(m):
idCon = m.chat.id
tb.send_message(idCon, "El comando plan funciona.")
tb.polling(none_stop=True)