📰 fix: Исправлена отправка превью дайджеста через HTTP

- Используется aiohttp вместо bot.send_message
- Нет ошибки Timeout context manager
- Коммит в Gitea

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Admin 2026-04-12 18:29:07 +04:00
parent 9033310cfa
commit aaac93594d

View file

@ -1266,25 +1266,28 @@ async def api_generate_digest(username: str = Depends(get_current_admin)):
# Сохраняем # Сохраняем
digest_id = await service.save_digest(digest_data, status='pending_approval') digest_id = await service.save_digest(digest_data, status='pending_approval')
# Отправляем превью админу в личку # Отправляем превью админу в личку через HTTP
from bot_instance import get_bot from config import get_proxy_url
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
bot = get_bot() async with aiohttp.ClientSession() as http_session:
keyboard = InlineKeyboardMarkup(inline_keyboard=[ url = f"https://api.telegram.org/bot{config.BOT_TOKEN}/sendMessage"
[InlineKeyboardButton(text="🌐 Утвердить в веб-панели", url="http://localhost:8000/digests")], keyboard = {
]) "inline_keyboard": [
[{"text": "🌐 Утвердить в веб-панели", "url": "http://localhost:8000/digests"}]
await bot.send_message( ]
config.ADMIN_USER_ID, }
f"📰 <b>Дайджест за неделю готов!</b>\n\n" payload = {
'chat_id': config.ADMIN_USER_ID,
'text': f"📰 <b>Дайджест за неделю готов!</b>\n\n"
f"Неделя #{digest_data['week_number']}/{digest_data['year']}\n" f"Неделя #{digest_data['week_number']}/{digest_data['year']}\n"
f"Период: {digest_data['period_start'].strftime('%d.%m')} - {digest_data['period_end'].strftime('%d.%m.%Y')}\n\n" f"Период: {digest_data['period_start'].strftime('%d.%m')} - {digest_data['period_end'].strftime('%d.%m.%Y')}\n\n"
f"Зайдите в веб-панель для утверждения:\n" f"Зайдите в веб-панель для утверждения:\n"
f"http://localhost:8000/digests", f"http://localhost:8000/digests",
parse_mode='HTML', 'parse_mode': 'HTML',
reply_markup=keyboard 'reply_markup': json.dumps(keyboard)
) }
async with http_session.post(url, json=payload, proxy=get_proxy_url()) as resp:
await resp.json()
return JSONResponse({ return JSONResponse({
"success": True, "success": True,