Advertisement
Videodima

INFO:aiogram.event:Update id=808681644 is not handled. Duration 0 ms by bot id=6962343235

May 3rd, 2024
581
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. import asyncio
  2. import logging
  3. import sys
  4. from typing import Dict, Any
  5.  
  6. from aiogram.client.default import DefaultBotProperties
  7. from aiogram.enums import ParseMode
  8. from aiogram.filters import CommandStart, Command
  9. from aiogram.fsm.context import FSMContext
  10. from aiogram.fsm.state import State, StatesGroup
  11. from aiogram.types import Message, CallbackQuery
  12. from aiogram.utils.keyboard import InlineKeyboardBuilder
  13. from aiogram import Router, Bot, types, F
  14.  
  15. from tests.bot.config import BOT_TOKEN
  16.  
  17. router = Router()
  18. bot = Bot(token=BOT_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
  19.  
  20.  
  21. class Done(StatesGroup):
  22.     proof = State()
  23.  
  24.  
  25. @router.message(Command("done"))
  26. async def done(message: Message, state: FSMContext):
  27.     await state.set_state(Done.proof)
  28.     await message.answer("<b>Надішліть мені фото-пруф виконаного завдання (максимум 1 фото)</b>")
  29.  
  30.  
  31. @router.message(Done.proof)
  32. async def proof(message: Message, state: FSMContext):
  33.     if message.photo:
  34.         data = await state.update_data(proof=message.photo[-1].file_id)
  35.         await state.clear()
  36.         await show_summary(message=message, data=data)
  37.     else:
  38.         await message.answer("<b>Будь ласка, надішліть фото!</b>")
  39.  
  40.  
  41. async def show_summary(message: Message, data: Dict[str, Any]) -> None:
  42.     proof = data['proof']
  43.     user_id = message.from_user.id
  44.     caption = "<b>Завдання виконано! Прошу перевірити його</b>"
  45.     builder = InlineKeyboardBuilder()
  46.     builder.add(types.InlineKeyboardButton(
  47.         text="✅ Ок, зроблено.",
  48.         callback_data=f"confirm:{user_id}")
  49.     )
  50.     builder.add(types.InlineKeyboardButton(
  51.         text="❌ Ні, не зроблено.",
  52.         callback_data=f"reject:{user_id}")
  53.     )
  54.     await bot.send_photo(chat_id=5197139803, photo=proof, caption=caption, reply_markup=builder.as_markup())
  55.  
  56.  
  57. @router.callback_query(F.text.startswith("confirm"))
  58. async def done_callback(callback_query: CallbackQuery):
  59.     user_id = callback_query.data.split(':')[1]
  60.     await bot.send_message(user_id, "<b>Вітаю! Завдання було перевірене і бали будуть нараховані згодом!</b>")
  61.     await callback_query.answer("Перевірка завершена, бали нараховано!")
  62.  
  63.  
  64. @router.callback_query(F.text.startswith("reject"))
  65. async def not_done_callback(callback_query: CallbackQuery):
  66.     user_id = callback_query.data.split(':')[1]
  67.     await bot.send_message(user_id, "<b>Нажаль, завдання не було виконане коректно.</b>")
  68.     await callback_query.answer("Перевірка завершена, завдання не виконане.")
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement