Бот в телеграм, при нажатии кнопки /start никак не реагирует на эту писанину, что не так?
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, CallbackContext
from telegram import ReplyKeyboardMarkup
# Определяем возможные ответы на вопросы
answers = {
'q1': ['a', 'b'],
'q2': ['x', 'y'],
'q3': ['r', 'p'],
'q4': ['n', 'm']
}
q1 = 'на какое время хотите инвестировать?'
q2 = 'сохранение капитала или рисковое приумножение?'
q3 = 'готовы ли Вы рисковать своими вложениями?'
q4 = 'готовы ли Вы каждый день проверять свои инвестиции и мониторить ситуацию на рынке?'
a = 'короткосрок'
b = 'долгосрок'
x = 'сохранение'
y = 'приумножение'
r = 'да'
p = 'нет'
n = 'да'
m = 'нет'
# Функция для создания клавиатуры с кнопками ответов
def build_menu(buttons, n_cols, header_buttons=None, footer_buttons=None):
menu = [buttons[i:i + n_cols] for i in range(0, len(buttons), n_cols)]
if header_buttons:
menu.insert(0, header_buttons)
if footer_buttons:
menu.append(footer_buttons)
return menu
# Функция для получения вердикта по комбинации ответов
def get_verdict(user_answers):
if user_answers == ['b', 'x', 'p', 'm']:
return "Вам подойдут акции из категории первого эшелона такие как: Газпром, Магнит, Сбер, Тинькофф и др"
elif user_answers == ['b', 'y', 'p', 'n']:
return "Вам подойдут акции из категории второго эшелона такие как: Башнефть, АВТОВАЗ, Промсвязьбанк и др"
elif user_answers == ['a', 'y', 'r', 'n']:
return "Вам подойдут акции из категории второго эшелона такие как: ОВК, ЧКПЗ, Звезда, МРСК Урала и др"
else:
return "Вам надо четче сформулировать свои цели от инвестирования"
# Функция для обработки команды /start
def start(update: Update, context: CallbackContext):
context.user_data['answers'] = []
ask_question(update, context, 'q1')
# Функция для задавания вопроса и отображения кнопок ответов
def ask_question(update: Update, context: CallbackContext, question_key):
question = f"Вопрос {len(context.user_data['answers']) + 1}: {globals()[question_key]}"
buttons = [globals()[answer] for answer in answers[question_key]]
reply_markup = ReplyKeyboardMarkup(build_menu(buttons, n_cols=2), one_time_keyboard=True)
update.message.reply_text(question, reply_markup=reply_markup)
# Функция для обработки ответов пользователя
def answer_question(update: Update, context: CallbackContext):
user_answer = update.message.text
context.user_data['answers'].append(user_answer)
if len(context.user_data['answers']) < 4:
next_question = f"q{len(context.user_data['answers']) + 1}"
ask_question(update, context, next_question)
else:
verdict = get_verdict(context.user_data['answers'])
update.message.reply_text(verdict)
def main():
updater = Updater("7006411619:AAHwBTmOsqOqMrJ0jd5b9pbWZUj0ya1vDIk", use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, answer_question))
updater.start_polling()
if __name__ == '__main__':
main()