2017-08-18 6 views
0

私の意図は、内部状態 'state'が特定のコマンドへのアクセスを許可または禁止するpyTelegramBotAPIでボットを開発することです。pyTelegramBotAPI funcフィルタとコマンドfilter message_handler

インポートtelebot

TOKEN =「TOKEN」

断片で予想出力はコマンドである「計画」および「状態」は0

私のコードである場合にのみメッセージであります

TB = telebot.TeleBot(TOKEN)

状態= 0

tb.message_handler @

(コマンド= [ '平面']、FUNC =ラムダ状態:状態== 0)

DEF planFunct(M):

idCon = m.chat.id 
tb.send_message(idCon, 'El comando plan funciona.' + str(idCon)) 

tb.polling(none_stop = TRUE)

このフラグメントの結果は出ません。そして、私は問題がフィルターの悪い使用、変数の範囲、またはラムダ関数の誤用から始まるかどうかを認識できません。

私は助けに感謝します、これはスタックオーバーフローの私の最初の質問です。

よろしく

API:問題へhttps://github.com/eternnoir/pyTelegramBotAPI

答えて

0

可能な解決策は、デフを介して共通の機能を使用することで、問題がの構文を適用した場合の関数にパラメータを渡すことが困難ですフィルタ '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) 
関連する問題