我正在为收入/费用项目写一个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
函数?
答案 0 :(得分:1)
好的,我发现了2个错误,解决了我的问题。
regUser
中的:
首先我在双引号之间使用了chat_id
,
第二,我使用Updater
使用大写U
代替updater
。