| 
					
				 | 
			
			
				@@ -0,0 +1,88 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import logging   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import telegram   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# API   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# BOT_TOKEN = "7756789480:AAFbQ_LrSSfMldIf-K_GhS7mISaORxW06ZA"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+BOT_TOKEN = "1156313150:AAGo7oVF59fg37PD6pmJ9fWBIuvMbhsUtv4"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+logging.basicConfig(   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    level=logging.INFO   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await context.bot.send_message(chat_id=update.effective_chat.id, text="Привет! Я могу помочь тебе подобрать комплектующие для компьютера. Напиши мне, что ты хочешь собрать или для каких целей тебя интересует компьютер?")   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def recommend_components(update: Update, context: ContextTypes.DEFAULT_TYPE):   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    user_text = update.message.text.lower()   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    recommendations = {}   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if "игровой" in user_text or "игры" in user_text:   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["процессор"] = "Intel Core i5-13600K или AMD Ryzen 5 7600X"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["видеокарта"] = "Nvidia RTX 3060 или AMD RX 6700 XT"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["материнская плата"] = "MSI MAG Z690 TOMAHAWK WIFI(Intel) или Gigabyte B650M GAMING X AX DDR5 AM5(AMD)"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["оперативная память"] = "16 ГБ DDR5"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["накопитель"] = "SSD NVMe 1 ТБ"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["Моя авторская сборка"] = "https://pcstonks.ru/note/VzeNSY"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["Сборка с RTX 4090"] = "https://pcstonks.ru/note/nxawcY"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["Средний бюджет"] = "https://pcstonks.ru/note/QaYHyV"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["С RTX 4070"] = "https://pcstonks.ru/note/VvNmst"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif "рабочий" in user_text or "работа" in user_text or "офис" in user_text:   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["процессор"] = "Intel Core i3-12100 или AMD Ryzen 3 5300G"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["видеокарта"] = "Встроенная графика (если не нужна высокая производительность)"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["материнская плата"] = "Выбери материнскую плату, совместимую с процессором"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["оперативная память"] = "8 ГБ DDR4"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recommendations["накопитель"] = "SSD 256 ГБ"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else:   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await context.bot.send_message(chat_id=update.effective_chat.id, text="Извини, я не понимаю, что ты хочешь собрать. Попробуй указать назначение компьютера (например, 'игровой компьютер' или 'рабочий компьютер').")   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    message = "Вот мои рекомендации:\n"   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for component, recommendation in recommendations.items():   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        message += f"{component}: {recommendation}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Создаем кнопки 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    keyboard = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        [InlineKeyboardButton("Показать ещё варианты", callback_data='more_options')], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        [InlineKeyboardButton("Главное меню", callback_data='main_menu')] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    reply_markup = InlineKeyboardMarkup(keyboard) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await context.bot.send_message(chat_id=update.effective_chat.id, text=message, reply_markup=reply_markup)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def handle_thank_you(update: Update, context: ContextTypes.DEFAULT_TYPE): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await context.bot.send_message(chat_id=update.effective_chat.id, text="Обращайся!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    query = update.callback_query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # await query.answer() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print(query.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if query.data == 'more_options': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await context.bot.send_message(chat_id=query.message.chat.id, text="Пока у меня нет дополнительных рекомендаций.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif query.data == 'main_menu': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await start(update=query.message, context=context) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if __name__ == '__main__':   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    application = ApplicationBuilder().token(BOT_TOKEN).build()   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    start_handler = CommandHandler('start', start) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    message_handler = MessageHandler(filters.TEXT & ~filters.COMMAND & ~filters.Regex(r'спасибо'), recommend_components) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    thank_you_handler = MessageHandler(filters.Regex(r'спасибо'), handle_thank_you) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    button_handler_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, button_handler) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    application.add_handler(start_handler)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    application.add_handler(message_handler)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    application.add_handler(thank_you_handler)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    application.add_handler(button_handler_handler)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    application.run_polling() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |