2017-01-02 35 views
2

我正在为收入/费用项目编写Telegram BotPython电报机器人对话方法不起作用

我使用python-telegram-bot此代码:

#!/usr/bin/python 
# -*- Coding : UTF-8 -*- 

from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove 
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler 
from settings.conf import conf 

conf = conf() 
updater = Updater(str(conf.token())) 
SETUP ,USERNAME = range(2) 

def start_method(bot, update): 
    """ Start Command """ 

    startList = [["Register New Account","Integrate An Account"]] 

    chat_id = update.message.chat_id 
    replyText = update.message.text 

    text = """Hello And Welcome To [Bestoon](http://bestoon.ir). 
This Bot Helps You Easily Access Your [Bestoon](http://bestoon.ir) Account. 
Now, How Can I Help You? 
""" 
    bot.sendChatAction(chat_id, "TYPING") 
    update.message.reply_text(text, parse_mode="Markdown",reply_markup=ReplyKeyboardMarkup(startList, one_time_keyboard=True)) 
    return SETUP 

def setup(bot, update): 
    """Initialize The User Account For The First Time""" 
    chat_id = update.message.chat_id 

    if update.message.text == "Register New Account": 
     bot.sendChatAction(chat_id, "TYPING") 
     register_text = """Ok. 
Now Send Me Your Bestoon Username. 
""" 
     update.message.reply_text(register_text,reply_markup=ReplyKeyboardRemove()) 
     print "Going For Username" 
     return USERNAME 

    elif update.message.text == "Integrate An Account": 
     bot.sendChatAction(chat_id, "TYPING") 
     update.message.reply_text("Sorry, Can\'t Integrate Now!", reply_markup=ReplyKeyboardRemove()) 
     bot.sendMessage(update.message.chat_id, "Bye!") 
     return ConversationHandler.END 

    else: 
     bot.sendChatAction(chat_id, "TYPING") 
     update.message.reply_text("Invalid Command!") 

def regUser(bot, Update): 
    chat_id = update.message.chat_id 
    bot.sendChatAction("chat_id", "TYPING") 
    update.message.reply_text("Registering Your Username") 
    return ConversationHandler.END 

def cancel(bot, update): 
    bot.sendMessage(update.message.chat_id, "Bye!") 
    return ConversationHandler.END 

conv_handler = ConversationHandler(
    entry_points = [CommandHandler('start', start_method)], 

    states = { 
     SETUP: [MessageHandler(Filters.text, setup)], 
     USERNAME: [MessageHandler(Filters.text, regUser)] 

    }, 

    fallbacks = [CommandHandler('cancel', cancel)] 
) 
updater.dispatcher.add_handler(conv_handler) 

########## Starting Bot ########## 
updater.start_polling() 
updater.idle() 

当我使用/start它的工作原理,直到博特说:

Ok

Now Send Me Your Username

之后,它需要返回Registering Your Username但它没有。

但我有权访问/cancel命令。 我需要知道为什么这个脚本不会调用regUser函数?

回答

0

好的我找到了2个错误,解决了我的问题。

regUser

首先我用双引号之间chat_id, 和第二我用Updater资本U而不是updater