@xefimovgmail

Почему при попытке использовать conversationhandler выдаёт ошибку?

Здравствуйте! Пытаюсь добавить регистрацию в бота посредством conversationhandler, но выдаёт ошибку:
SOURCE: [MessageHandler(Filters.text, self.reg_go_two)]
NameError: name 'SOURCE' is not defined


Вот кусок кода:
import telegram

import config

from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, ReplyKeyboardMarkup
from telegram.ext import Updater, CommandHandler, MessageHandler, CallbackQueryHandler, ConversationHandler, CallbackContext, Filters
from Service.Database import DatabaseService
from Service.User import User
from Service.Message import Message
from Service.Keyboard import Keyboard

class TelegramBot:
	updater = None
	database_service =  None

	def __init__(self, token):

		try:
			self.database_service = DatabaseService(config.bd_name, config.bd_user, config.bd_pass, config.bd_host)

		except Exception as e:
			print(e)

		else:
			print("Connect database {}".format(config.bd_name))

		self.updater = Updater(token)
		self.handler()
		self.updater.start_polling()
		self.updater.idle()

	def handler(self):
		''' event handler '''
		dispatcher = self.updater.dispatcher

		dispatcher.add_handler(CommandHandler('start', self.start))
		dispatcher.add_handler(ConversationHandler(

			entry_points = [
				CallbackQueryHandler(self.reg_go_one, pattern="reg_go_one")
			],

			states = {
				SOURCE: [MessageHandler(Filters.text, self.reg_go_two)]
			},
			fallbacks=[CommandHandler('cancel', cancel)],
		))

	def reg_go_one(self, update, context):
		''' registration of an application, step one '''
		context.bot.delete_message(message_id=update.callback_query.message.message_id, chat_id=update.callback_query.message.chat.id)
		context.bot.send_message(chat_id=update.effective_chat.id, text=Message.registration_text()[1])

		return SOURCE

	def start(self, update, context):
		# check user in database
		if not self.database_service.user_bd(update.effective_chat.id):
			# check username from user
			if update.message.chat.username is None:
				# talk about no username
				context.bot.send_message(chat_id=update.effective_chat.id, text=Message.NoneUsername_text())
			else:
				context.bot.send_message(chat_id=update.effective_chat.id, text=Message.registration_text()[0], reply_markup=InlineKeyboardMarkup(Keyboard.registration_keyboard()[0]))
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ответы на вопрос 1
@xefimovgmail Автор вопроса
Решил проблему добавив SOURCE, LEVEL = range(2), но всё-равно интересно как это работает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы