Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import asyncio
- import logging
- import sys
- from typing import Dict, Any
- from aiogram.client.default import DefaultBotProperties
- from aiogram.enums import ParseMode
- from aiogram.filters import CommandStart, Command
- from aiogram.fsm.context import FSMContext
- from aiogram.fsm.state import State, StatesGroup
- from aiogram.types import Message, CallbackQuery
- from aiogram.utils.keyboard import InlineKeyboardBuilder
- from aiogram import Router, Bot, types, F
- from tests.bot.config import BOT_TOKEN
- router = Router()
- bot = Bot(token=BOT_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
- class Done(StatesGroup):
- proof = State()
- @router.message(Command("done"))
- async def done(message: Message, state: FSMContext):
- await state.set_state(Done.proof)
- await message.answer("<b>Надішліть мені фото-пруф виконаного завдання (максимум 1 фото)</b>")
- @router.message(Done.proof)
- async def proof(message: Message, state: FSMContext):
- if message.photo:
- data = await state.update_data(proof=message.photo[-1].file_id)
- await state.clear()
- await show_summary(message=message, data=data)
- else:
- await message.answer("<b>Будь ласка, надішліть фото!</b>")
- async def show_summary(message: Message, data: Dict[str, Any]) -> None:
- proof = data['proof']
- user_id = message.from_user.id
- caption = "<b>Завдання виконано! Прошу перевірити його</b>"
- builder = InlineKeyboardBuilder()
- builder.add(types.InlineKeyboardButton(
- text="✅ Ок, зроблено.",
- callback_data=f"confirm:{user_id}")
- )
- builder.add(types.InlineKeyboardButton(
- text="❌ Ні, не зроблено.",
- callback_data=f"reject:{user_id}")
- )
- await bot.send_photo(chat_id=5197139803, photo=proof, caption=caption, reply_markup=builder.as_markup())
- @router.callback_query(F.text.startswith("confirm"))
- async def done_callback(callback_query: CallbackQuery):
- user_id = callback_query.data.split(':')[1]
- await bot.send_message(user_id, "<b>Вітаю! Завдання було перевірене і бали будуть нараховані згодом!</b>")
- await callback_query.answer("Перевірка завершена, бали нараховано!")
- @router.callback_query(F.text.startswith("reject"))
- async def not_done_callback(callback_query: CallbackQuery):
- user_id = callback_query.data.split(':')[1]
- await bot.send_message(user_id, "<b>Нажаль, завдання не було виконане коректно.</b>")
- await callback_query.answer("Перевірка завершена, завдання не виконане.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement