1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

Починка статусов в ботов3

This commit is contained in:
MoonTestUse1
2024-12-26 04:12:18 +06:00
parent 40607aefe2
commit 7dc8a25afb
2 changed files with 37 additions and 13 deletions

View File

@@ -1,13 +1,19 @@
from aiogram import Bot, Dispatcher, types from aiogram import Bot, Dispatcher, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.filters import Command
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from ..database import get_db from ..database import get_db
from .. import models from .. import models
# Создаем обработчик нажатия кнопки # Создаем роутер для обработки callback'ов
@dp.callback_query_handler(lambda c: c.data.startswith('status_')) from aiogram import Router
router = Router()
# Обработчик нажатия кнопки
@router.callback_query(lambda c: c.data.startswith('status_'))
async def process_status_button(callback_query: types.CallbackQuery): async def process_status_button(callback_query: types.CallbackQuery):
try: try:
print(f"Hello world: {callback_query.data}")
# Получаем ID заявки и новый статус из callback_data # Получаем ID заявки и новый статус из callback_data
_, request_id, new_status = callback_query.data.split('_') _, request_id, new_status = callback_query.data.split('_')
request_id = int(request_id) 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) await callback_query.answer("Произошла ошибка при обновлении статуса", show_alert=True)
def get_updated_keyboard(request_id: int, current_status: str) -> InlineKeyboardMarkup: def get_updated_keyboard(request_id: int, current_status: str) -> InlineKeyboardMarkup:
keyboard = InlineKeyboardMarkup() keyboard = InlineKeyboardMarkup(inline_keyboard=[])
if current_status != "in_progress": if current_status != "in_progress":
keyboard.add(InlineKeyboardButton( keyboard.inline_keyboard.append([
"В работе", InlineKeyboardButton(
text="В работе",
callback_data=f"status_{request_id}_in_progress" callback_data=f"status_{request_id}_in_progress"
)) )
])
if current_status != "completed": if current_status != "completed":
keyboard.add(InlineKeyboardButton( keyboard.inline_keyboard.append([
"Завершено", InlineKeyboardButton(
text="Завершено",
callback_data=f"status_{request_id}_completed" callback_data=f"status_{request_id}_completed"
)) )
])
return keyboard return keyboard
# В основном файле бота (где создается диспетчер)
dp = Dispatcher()
dp.include_router(router)

View File

@@ -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)