我正在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
它时,它会一直工作,直到 Bot 说:
Ok
Now Send Me Your Username
之后它需要返回Registering Your Username
,但它没有。
但我有权使用/cancel
命令。我需要知道为什么这个脚本不调用regUser
函数?