Skip to content

Commit 0ac6cea

Browse files
committed
Какие-то правки кода
Уже не помню даже, почему
1 parent b976ab5 commit 0ac6cea

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

code/05_filters_and_middlewares/bot.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from config_reader import config
66
from handlers import group_games, checkin, usernames
7+
from middlewares.slow import ChatActionMiddleware
78
from middlewares.weekend import WeekendCallbackMiddleware
89

910

@@ -15,6 +16,7 @@ async def main():
1516
dp.include_router(checkin.router)
1617
dp.include_router(usernames.router)
1718

19+
dp.message.middleware(ChatActionMiddleware())
1820
dp.callback_query.outer_middleware(WeekendCallbackMiddleware())
1921

2022
# Запускаем бота и пропускаем все накопленные входящие

code/05_filters_and_middlewares/handlers/checkin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import asyncio
2+
13
from aiogram import Router, F
24
from aiogram.filters import Command
35
from aiogram.types import Message, CallbackQuery
@@ -10,8 +12,9 @@
1012
router.message.middleware(WeekendMessageMiddleware())
1113

1214

13-
@router.message(Command("checkin"))
15+
@router.message(Command("checkin"), flags={"long_operation": "upload_video_note"})
1416
async def cmd_checkin(message: Message):
17+
await asyncio.sleep(5)
1518
await message.answer(
1619
"Пожалуйста, нажмите на кнопку ниже:",
1720
reply_markup=get_checkin_kb()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from statistics import median
2+
from typing import Callable, Dict, Any, Awaitable
3+
4+
from aiogram import BaseMiddleware
5+
from aiogram.dispatcher.flags import get_flag
6+
from aiogram.types import Message
7+
from aiogram.utils.chat_action import ChatActionSender
8+
9+
10+
class ChatActionMiddleware(BaseMiddleware):
11+
async def __call__(
12+
self,
13+
handler: Callable[[Message, Dict[str, Any]], Awaitable[Any]],
14+
event: Message,
15+
data: Dict[str, Any],
16+
) -> Any:
17+
long_operation_type = get_flag(data, "long_operation")
18+
19+
# Если такого флага на хэндлере нет
20+
if not long_operation_type:
21+
return await handler(event, data)
22+
23+
# Если флаг есть
24+
async with ChatActionSender(
25+
action=long_operation_type,
26+
chat_id=event.chat.id,
27+
bot=data["bot"],
28+
):
29+
return await handler(event, data)

0 commit comments

Comments
 (0)