botOAiP.py 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import logging
  2. import telegram
  3. from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
  4. from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters
  5. # API
  6. # BOT_TOKEN = "7756789480:AAFbQ_LrSSfMldIf-K_GhS7mISaORxW06ZA"
  7. BOT_TOKEN = "1156313150:AAGo7oVF59fg37PD6pmJ9fWBIuvMbhsUtv4"
  8. """
  9. logging.basicConfig(
  10. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
  11. level=logging.INFO
  12. )
  13. """
  14. async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
  15. await context.bot.send_message(chat_id=update.effective_chat.id, text="Привет! Я могу помочь тебе подобрать комплектующие для компьютера. Напиши мне, что ты хочешь собрать или для каких целей тебя интересует компьютер?")
  16. async def recommend_components(update: Update, context: ContextTypes.DEFAULT_TYPE):
  17. user_text = update.message.text.lower()
  18. recommendations = {}
  19. if "игровой" in user_text or "игры" in user_text:
  20. recommendations["процессор"] = "Intel Core i5-13600K или AMD Ryzen 5 7600X"
  21. recommendations["видеокарта"] = "Nvidia RTX 3060 или AMD RX 6700 XT"
  22. recommendations["материнская плата"] = "MSI MAG Z690 TOMAHAWK WIFI(Intel) или Gigabyte B650M GAMING X AX DDR5 AM5(AMD)"
  23. recommendations["оперативная память"] = "16 ГБ DDR5"
  24. recommendations["накопитель"] = "SSD NVMe 1 ТБ"
  25. recommendations["Моя авторская сборка"] = "https://pcstonks.ru/note/VzeNSY"
  26. recommendations["Сборка с RTX 4090"] = "https://pcstonks.ru/note/nxawcY"
  27. recommendations["Средний бюджет"] = "https://pcstonks.ru/note/QaYHyV"
  28. recommendations["С RTX 4070"] = "https://pcstonks.ru/note/VvNmst"
  29. elif "рабочий" in user_text or "работа" in user_text or "офис" in user_text:
  30. recommendations["процессор"] = "Intel Core i3-12100 или AMD Ryzen 3 5300G"
  31. recommendations["видеокарта"] = "Встроенная графика (если не нужна высокая производительность)"
  32. recommendations["материнская плата"] = "Выбери материнскую плату, совместимую с процессором"
  33. recommendations["оперативная память"] = "8 ГБ DDR4"
  34. recommendations["накопитель"] = "SSD 256 ГБ"
  35. else:
  36. await context.bot.send_message(chat_id=update.effective_chat.id, text="Извини, я не понимаю, что ты хочешь собрать. Попробуй указать назначение компьютера (например, 'игровой компьютер' или 'рабочий компьютер').")
  37. return
  38. message = "Вот мои рекомендации:\n"
  39. for component, recommendation in recommendations.items():
  40. message += f"{component}: {recommendation}\n"
  41. # Создаем кнопки
  42. keyboard = [
  43. [InlineKeyboardButton("Показать ещё варианты", callback_data='more_options')],
  44. [InlineKeyboardButton("Главное меню", callback_data='main_menu')]
  45. ]
  46. reply_markup = InlineKeyboardMarkup(keyboard)
  47. await context.bot.send_message(chat_id=update.effective_chat.id, text=message, reply_markup=reply_markup)
  48. async def handle_thank_you(update: Update, context: ContextTypes.DEFAULT_TYPE):
  49. await context.bot.send_message(chat_id=update.effective_chat.id, text="Обращайся!")
  50. async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
  51. query = update.callback_query
  52. # await query.answer()
  53. print(query.data)
  54. if query.data == 'more_options':
  55. await context.bot.send_message(chat_id=query.message.chat.id, text="Пока у меня нет дополнительных рекомендаций.")
  56. elif query.data == 'main_menu':
  57. await start(update=query.message, context=context)
  58. if __name__ == '__main__':
  59. application = ApplicationBuilder().token(BOT_TOKEN).build()
  60. start_handler = CommandHandler('start', start)
  61. message_handler = MessageHandler(filters.TEXT & ~filters.COMMAND & ~filters.Regex(r'спасибо'), recommend_components)
  62. thank_you_handler = MessageHandler(filters.Regex(r'спасибо'), handle_thank_you)
  63. button_handler_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, button_handler)
  64. application.add_handler(start_handler)
  65. application.add_handler(message_handler)
  66. application.add_handler(thank_you_handler)
  67. application.add_handler(button_handler_handler)
  68. application.run_polling()