From a63f32de8b4bd554d84d837736e75f5dcd8028f3 Mon Sep 17 00:00:00 2001 From: kabanchik Date: Wed, 11 Jun 2025 19:35:59 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 + main.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 .env create mode 100644 main.py diff --git a/.env b/.env new file mode 100644 index 0000000..8b179eb --- /dev/null +++ b/.env @@ -0,0 +1 @@ +BOT_TOKEN=8026857646:AAGeXHL0UH-lOnamM9SSSvYeUu51BzPduJk \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..48c2f75 --- /dev/null +++ b/main.py @@ -0,0 +1,75 @@ +import os +import random +from aiogram import Bot, Dispatcher, types, F +from aiogram.filters import Command +from aiogram.types import ReplyKeyboardMarkup, KeyboardButton +from fastapi import FastAPI +from contextlib import asynccontextmanager + +# Загрузка токена из переменных окружения +BOT_TOKEN = os.getenv("BOT_TOKEN") +if not BOT_TOKEN: + raise ValueError("Не задан токен бота. Укажите его в переменной окружения BOT_TOKEN") + +# Инициализация бота и диспетчера +bot = Bot(token=BOT_TOKEN) +dp = Dispatcher() + +# Создаем клавиатуру +keyboard = ReplyKeyboardMarkup( + keyboard=[ + [KeyboardButton(text="Завтрак"), KeyboardButton(text="Обед")], + [KeyboardButton(text="Ужин"), KeyboardButton(text="Прочее")] + ], + resize_keyboard=True, + input_field_placeholder="Выберите тип блюда" +) + +# Функция для получения случайного блюда из файла +def get_random_dish(meal_type: str) -> str: + filename = f"{meal_type.lower()}.txt" + try: + with open(filename, 'r', encoding='utf-8') as file: + dishes = file.read().splitlines() + if dishes: + return random.choice(dishes) + return f"Файл {filename} пуст" + except FileNotFoundError: + return f"Файл с блюдами для {meal_type} не найден" + +# Обработчик команды /start +@dp.message(Command("start")) +async def start_handler(message: types.Message): + await message.answer( + "Привет! Я помогу выбрать блюдо. Выбери тип:", + reply_markup=keyboard + ) + +# Обработчик кнопок +@dp.message(F.text.in_(["Завтрак", "Обед", "Ужин", "Прочее"])) +async def meal_handler(message: types.Message): + meal_type = message.text + dish = get_random_dish(meal_type) + await message.answer(f"📌 Для {meal_type}а рекомендую:\n\n{dish}", parse_mode="HTML") + +# Инициализация FastAPI +@asynccontextmanager +async def lifespan(app: FastAPI): + await bot.delete_webhook() + await bot.set_webhook(f"{BASE_URL}/webhook") + yield + await bot.session.close() + +app = FastAPI(lifespan=lifespan) + +@app.post("/webhook") +async def webhook(update: dict): + telegram_update = types.Update(**update) + await dp.feed_update(bot=bot, update=telegram_update) + +@app.get("/") +async def index(): + return {"status": "Bot is running"} + +# Конфигурация (замените на ваш публичный URL) +BASE_URL = "https://bubu.frps.botforge.biz" \ No newline at end of file