From 8adcb3bdda817b9441ea0dc4792e17f0a6485285 Mon Sep 17 00:00:00 2001 From: Admin Date: Sun, 12 Apr 2026 18:04:56 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8=20fix:=20=D0=A3=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D1=81=D0=BF=D0=B0=D0=BC=20=D0=B2=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B8=D0=B9=20=D1=87=D0=B0=D1=82=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=83=D0=BC=D0=BD=D0=BE=D0=B9=20=D1=80=D0=B0=D1=81=D1=81=D1=8B?= =?UTF-8?q?=D0=BB=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Удалена отправка объявления в ADMIN_CHAT_ID (общий чат) - Умная рассылка идёт ТОЛЬКО выбранным получателям - Статистика отправляется только админу в личку - broadcast_type='smart' вместо 'manual' - chat_id и message_id теперь None в БД Инцидент: бот спамил в общий чат со 100+ жителями Co-authored-by: Qwen-Coder --- handlers/smart_broadcast.py | 39 +++++-------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/handlers/smart_broadcast.py b/handlers/smart_broadcast.py index 6bc34ec..3c28541 100644 --- a/handlers/smart_broadcast.py +++ b/handlers/smart_broadcast.py @@ -197,51 +197,22 @@ async def send_smart_broadcast(bot, text: str, recipients: str = 'all_verified', bot_token = BOT_TOKEN proxy_url = get_proxy_url() - # Отправляем в чат первым + # НЕ отправляем в общий чат! Умная рассылка идёт только выбранным получателям + # Для объявлений в общий чат используйте обычную рассылку chat_message_id = None - try: - async with aiohttp.ClientSession() as http_session: - if photo_file_id: - url = f"https://api.telegram.org/bot{bot_token}/sendPhoto" - data = aiohttp.FormData() - data.add_field('chat_id', str(ADMIN_CHAT_ID)) - data.add_field('photo', photo_file_id) - data.add_field('caption', f"📢 Объявление от администрации\n\n{text}") - data.add_field('reply_markup', json.dumps(reply_markup)) - data.add_field('parse_mode', 'HTML') - - async with http_session.post(url, data=data, proxy=proxy_url) as resp: - result_data = await resp.json() - if result_data.get('ok'): - chat_message_id = result_data['result']['message_id'] - else: - url = f"https://api.telegram.org/bot{bot_token}/sendMessage" - payload = { - 'chat_id': ADMIN_CHAT_ID, - 'text': f"📢 Объявление от администрации\n\n{text}", - 'reply_markup': json.dumps(reply_markup), - 'parse_mode': 'HTML' - } - - async with http_session.post(url, json=payload, proxy=proxy_url) as resp: - result_data = await resp.json() - if result_data.get('ok'): - chat_message_id = result_data['result']['message_id'] - except Exception as e: - logger.error(f"Ошибка отправки в чат: {e}") # Создаём запись в БД async with AsyncSessionLocal() as session: broadcast = Broadcast( - message_id=chat_message_id, - chat_id=ADMIN_CHAT_ID, + message_id=None, # Умная рассылка не создаёт сообщение в общем чате + chat_id=None, text=text, photo_file_id=photo_file_id, sent_at=datetime.utcnow(), sent_by=ADMIN_USER_ID, total_sent=len(users), has_read_button=True, - broadcast_type='manual', + broadcast_type='smart', ) session.add(broadcast) await session.commit()