from aiogram import types, Bot, Dispatcher, executor
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext
class TicketForm(StatesGroup):
waiting_for_ticket_id = State()
@dp.callback_query_handler(lambda c: c.data.startswith('ticket_'))
async def process_callback_button1(callback_query: types.CallbackQuery, state: FSMContext):
# Получаем номер тикета из данных обратного вызова
number = callback_query.data.split("_")[1]
# Получаем информацию о тикете
ticket_data = await get_ticket_info(number) # Предполагается, что get_ticket_info - это асинхронная функция, возвращающая данные тикета
# Сохраняем данные тикета в контексте состояния
await TicketForm.waiting_for_ticket_id.set()
await state.update_data(ticket=ticket_data)
# Отправляем сообщение пользователю
await callback_query.answer(f'Вы выбрали тикет №{number}')
await callback_query.message.reply(f'Вы выбрали тикет №{number}\n id: {ticket_
data.tg _id} \n ФИО: {ticket_data.fio} \n Описание: {ticket_data.description}\n Выберите действие:', reply_markup=kb.ticket_red)
@dp.callback_query_handler(lambda c: c.data == 'ticket_answer', state=TicketForm.waiting_for_ticket_id)
async def process_callback_button2(callback_query: types.CallbackQuery, state: FSMContext):
# Получаем данные тикета из контекста состояния
ticket_data = await state.get_data()
ticket_id = ticket_data['ticket'].tg_id # Получаем ID тикета
# Здесь вы можете использовать ticket_id для выполнения необходимых действий
await callback_query.answer("Введите ответ")
# Асинхронная функция для имитации получения информации о тикете
async def get_ticket_info(number):
return {"tg_id": f"ID_{number}", "fio": "Иванов Иван Иванович", "description": "Тестовое описание"}
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)