pyTelegramBotAPI func过滤器和命令过滤message_handler

时间:2017-08-18 16:19:40

标签: android python-3.x lambda telegram telegram-bot

我的目的是使用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函数开始的。

我很感激帮助,这是我在堆栈溢出中的第一个问题。

此致

API:https://github.com/eternnoir/pyTelegramBotAPI

1 个答案:

答案 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)