From 7dc8a25afb67d64f5594dbd0f2c3d3442ec56262 Mon Sep 17 00:00:00 2001 From: MoonTestUse1 Date: Thu, 26 Dec 2024 04:12:18 +0600 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=BE=D0=B2=20=D0=B2=20?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BE=D0=B23?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/bot.py | 38 +++++++++++++++++++++++++------------ backend/app/bot/__init__.py | 12 +++++++++++- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/backend/app/bot.py b/backend/app/bot.py index 501b26e..8cdea92 100644 --- a/backend/app/bot.py +++ b/backend/app/bot.py @@ -1,13 +1,19 @@ from aiogram import Bot, Dispatcher, types from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton +from aiogram.filters import Command from sqlalchemy.orm import Session from ..database import get_db from .. import models -# Создаем обработчик нажатия кнопки -@dp.callback_query_handler(lambda c: c.data.startswith('status_')) +# Создаем роутер для обработки callback'ов +from aiogram import Router +router = Router() + +# Обработчик нажатия кнопки +@router.callback_query(lambda c: c.data.startswith('status_')) async def process_status_button(callback_query: types.CallbackQuery): try: + print(f"Hello world: {callback_query.data}") # Получаем ID заявки и новый статус из callback_data _, request_id, new_status = callback_query.data.split('_') request_id = int(request_id) @@ -37,18 +43,26 @@ async def process_status_button(callback_query: types.CallbackQuery): await callback_query.answer("Произошла ошибка при обновлении статуса", show_alert=True) def get_updated_keyboard(request_id: int, current_status: str) -> InlineKeyboardMarkup: - keyboard = InlineKeyboardMarkup() + keyboard = InlineKeyboardMarkup(inline_keyboard=[]) if current_status != "in_progress": - keyboard.add(InlineKeyboardButton( - "В работе", - callback_data=f"status_{request_id}_in_progress" - )) + keyboard.inline_keyboard.append([ + InlineKeyboardButton( + text="В работе", + callback_data=f"status_{request_id}_in_progress" + ) + ]) if current_status != "completed": - keyboard.add(InlineKeyboardButton( - "Завершено", - callback_data=f"status_{request_id}_completed" - )) + keyboard.inline_keyboard.append([ + InlineKeyboardButton( + text="Завершено", + callback_data=f"status_{request_id}_completed" + ) + ]) - return keyboard \ No newline at end of file + return keyboard + +# В основном файле бота (где создается диспетчер) +dp = Dispatcher() +dp.include_router(router) \ No newline at end of file diff --git a/backend/app/bot/__init__.py b/backend/app/bot/__init__.py index 1d1b0fd..40dcf64 100644 --- a/backend/app/bot/__init__.py +++ b/backend/app/bot/__init__.py @@ -1 +1,11 @@ -from .bot import dp, start_bot +from aiogram import Bot, Dispatcher +from .config import BOT_TOKEN + +bot = Bot(token="7677506032:AAHduD5EePz3bE23DKlo35KoOp2_9lZuS34") +dp = Dispatcher() + +async def start_bot(): + # Импортируем здесь, чтобы избежать циклических импортов + from .bot import router + dp.include_router(router) + await dp.start_polling(bot, skip_updates=True) \ No newline at end of file