Advertisement
fuccpuff

Untitled

Feb 28th, 2024
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.47 KB | None | 0 0
  1. import telebot
  2. from telebot import types
  3. from config import TOKEN
  4.  
  5. bot = telebot.TeleBot(TOKEN)
  6.  
  7. user_profiles = {}
  8. user_responses = {}
  9.  
  10. questions = [
  11. "Тебе нравится создавать и конструировать вещи?",
  12. "Интересуешься ли ты компьютерными технологиями и программированием?",
  13. "Любишь ли ты рисовать или заниматься дизайном?",
  14. "Увлекаешься ли ты изучением живой природы и биологии?",
  15. "Интересуешься ли техникой, машиностроением или автомобилями?",
  16. "Хочешь ли ты узнать больше о науке о Земле и географии?",
  17. "Привлекает ли тебя мир науки о космосе и авиации?",
  18. "Мечтаешь ли создавать новые материалы с помощью нанотехнологий?",
  19. "Получаешь ли ты удовольствие от решения сложных математических задач?",
  20. "Нравится ли тебе узнавать о новых научных открытиях и изобретениях?",
  21. "Есть ли у тебя интерес к созданию компьютерных игр или приложений?",
  22. "Любишь ли ты работать с руками, создавая физические объекты или модели?",
  23. "Мечтаешь ли ты стать инженером или изобретателем?",
  24. "Интересуешься ли ты экологией и устойчивым развитием?",
  25. "Привлекает ли тебя работа с видео и аудио технологиями?",
  26. "Хотел бы ты изучать космос или заниматься астрономией?"
  27. ]
  28.  
  29. directions_descriptions = {
  30. 'robo': 'Робоквантум: Основан на проектировании и управлении робототехническими системами.',
  31. 'design': 'Промдизайн: Фокусируется на проектировании объектов массового производства.',
  32. 'it': 'IT-квантум: Сосредоточен на информационных технологиях для решения прикладных задач.',
  33. 'hitech': 'Hi-Tech цех: Занимается передовыми технологиями для материализации проектов.',
  34. 'auto': 'Автоквантум: Включает разработки в области наземного транспорта, проектирование и конструирование.',
  35. 'aero': 'Аэроквантум: Ориентирован на создание летательных аппаратов, включая беспилотные.',
  36. 'nano': 'Наноквантум: Охватывает исследование на наноразмерном уровне и создание новых материалов.',
  37. 'geo': 'Геоквантум: Работа с геоинформационными технологиями и пространственными данными.',
  38. 'bio': 'Биоквантум: Инженерно-биологические системы, прикладная биология и биотехнологии.',
  39. 'energy': 'Энерджиквантум: Знакомство с основами традиционной и альтернативной энергетики.',
  40. 'vr': 'VR квантум: Разработка приложений виртуальной, дополненной и смешанной реальности.',
  41. 'math': 'Математика: Удовольствие от решения математических задач и разработки новых алгоритмов.',
  42. 'science': 'Наука: Страсть к открытиям и изучению окружающего мира на всех уровнях.',
  43. 'programming': 'Программирование: Создание новых программных решений и приложений.',
  44. 'engineering': 'Инженерия: Проектирование и создание новых технологий и машин.',
  45. 'invent': 'Изобретения: Разработка новых устройств и технологий для улучшения жизни.',
  46. 'eco': 'Экология: Забота о природе и разработка устойчивых технологий.',
  47. 'media': 'Медиа: Работа с новыми формами медиаконтента и технологиями вещания.',
  48. 'astro': 'Астрономия: Изучение космоса и всего, что в нем находится.'
  49. }
  50.  
  51. # Функция для отправки вопросов пользователю
  52. def send_question(chat_id, question_num):
  53. markup = types.InlineKeyboardMarkup(row_width=2)
  54. buttons = [
  55. types.InlineKeyboardButton("Да", callback_data=f"yes_{question_num}"),
  56. types.InlineKeyboardButton("Нет", callback_data=f"no_{question_num}")
  57. ]
  58. markup.add(*buttons)
  59. bot.send_message(chat_id, questions[question_num], reply_markup=markup)
  60.  
  61. # Обработчик команды /start
  62. @bot.message_handler(commands=['start'])
  63. def start(message):
  64. chat_id = message.chat.id
  65. if chat_id not in user_profiles:
  66. user_profiles[chat_id] = {'registered': True, 'name': None, 'email': None}
  67. bot.send_message(chat_id, 'Добро пожаловать! Вы зарегистрированы. Пожалуйста, укажите свое имя с помощью команды /setname.')
  68. else:
  69. bot.send_message(chat_id, 'Вы уже зарегистрированы. Начнем тест?', reply_markup=get_directions_markup())
  70.  
  71. # Функция для создания клавиатуры с направлениями
  72. def get_directions_markup():
  73. markup = types.InlineKeyboardMarkup(row_width=2)
  74. buttons = [
  75. types.InlineKeyboardButton(text=name, callback_data=data) for name, data in [
  76. ('Робоквантум', 'robo'), ('Промдизайн', 'design'), ('IT-квантум', 'it'),
  77. # Добавьте остальные кнопки по аналогии
  78. ]
  79. ]
  80. markup.add(*buttons)
  81. return markup
  82.  
  83. # Обработчик для ввода имени пользователем
  84. @bot.message_handler(commands=['setname'])
  85. def set_name(message):
  86. chat_id = message.chat.id
  87. if chat_id in user_profiles and user_profiles[chat_id]['registered']:
  88. msg = bot.send_message(chat_id, 'Пожалуйста, укажите свое имя:')
  89. bot.register_next_step_handler(msg, process_name_step)
  90. else:
  91. bot.send_message(chat_id, 'Вы не зарегистрированы.')
  92.  
  93. def process_name_step(message):
  94. chat_id = message.chat.id
  95. name = message.text
  96. user_profiles[chat_id]['name'] = name
  97. bot.send_message(chat_id, f'Спасибо, {name}! Ваше имя сохранено. Начнем тест?', reply_markup=get_directions_markup())
  98.  
  99. # Обработчик ответов на вопросы теста
  100. @bot.callback_query_handler(func=lambda call: True)
  101. def callback_query(call):
  102. chat_id = call.message.chat.id
  103. data = call.data
  104. if data.startswith("yes_") or data.startswith("no_"):
  105. # Обработка ответа пользователя
  106. question_num = int(data.split("_")[1])
  107. # Здесь можно добавить логику обработки ответа
  108. next_question = question_num + 1
  109. if next_question < len(questions):
  110. send_question(chat_id, next_question)
  111. else:
  112. # Завершение теста
  113. bot.send_message(chat_id, "Тест завершен. Спасибо за участие!")
  114. else:
  115. # Обработка выбора направления
  116. if data in directions_descriptions:
  117. bot.send_message(chat_id, directions_descriptions[data])
  118. else:
  119. bot.send_message(chat_id, "Выбрано неизвестное направление.")
  120.  
  121. bot.polling(none_stop=True)
  122.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement