2017-01-02 6 views
2

Я пишу Telegram Bot для проекта «Доход/расходы».Python Telegram Bot Разговор не работает

У меня есть этот код с помощью 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.

 Смежные вопросы

  • Нет связанных вопросов^_^