🚨 fix: Убрать спам в общий чат при умной рассылке
- Удалена отправка объявления в ADMIN_CHAT_ID (общий чат) - Умная рассылка идёт ТОЛЬКО выбранным получателям - Статистика отправляется только админу в личку - broadcast_type='smart' вместо 'manual' - chat_id и message_id теперь None в БД Инцидент: бот спамил в общий чат со 100+ жителями Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
07d7a51f10
commit
8adcb3bdda
1 changed files with 5 additions and 34 deletions
|
|
@ -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"📢 <b>Объявление от администрации</b>\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"📢 <b>Объявление от администрации</b>\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()
|
||||
|
|
|
|||
Loading…
Reference in a new issue