aboutsummaryrefslogtreecommitdiff
path: root/libs/msg.py
diff options
context:
space:
mode:
authorTolmachev Igor <me@igorek.dev>2026-03-23 18:07:30 +0300
committerTolmachev Igor <me@igorek.dev>2026-03-23 18:07:30 +0300
commitf7b7e87cffc9dcb2817b070d7a003ac234c96ec3 (patch)
tree47f8af52edcac24f16ae58d0501bd2a4a42c2278 /libs/msg.py
parent8e034766bb7e2d23f88c5ff1a254126f11a5f412 (diff)
downloadvpn_manager_bot-f7b7e87cffc9dcb2817b070d7a003ac234c96ec3.tar.gz
vpn_manager_bot-f7b7e87cffc9dcb2817b070d7a003ac234c96ec3.zip
Add new_announcement command
Diffstat (limited to 'libs/msg.py')
-rw-r--r--libs/msg.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/libs/msg.py b/libs/msg.py
new file mode 100644
index 0000000..9bcc52a
--- /dev/null
+++ b/libs/msg.py
@@ -0,0 +1,25 @@
1import asyncio
2from typing import AsyncGenerator, Iterable
3
4from aiogram import Bot
5from aiogram.exceptions import TelegramAPIError, TelegramRetryAfter
6
7from models import RichText
8
9
10async def publish(
11 bot: Bot,
12 users: Iterable[int],
13 rich_text: RichText,
14) -> AsyncGenerator[int]:
15 for n, user_id in enumerate(users, start=1):
16 for _ in range(5):
17 try:
18 await rich_text.send(bot, user_id)
19 break
20 except TelegramRetryAfter as e:
21 await asyncio.sleep(e.retry_after + 1)
22 except TelegramAPIError:
23 await asyncio.sleep(5)
24
25 yield n