Добавить MORNING_CHANNEL_ID для утреннего дайджеста
This commit is contained in:
parent
0d605eea5a
commit
1a7f2d75b8
@ -1,2 +1,3 @@
|
||||
DISCORD_TOKEN=your_bot_token_here
|
||||
MORNING_TIME=07:00
|
||||
MORNING_CHANNEL_ID=channel_id
|
||||
|
||||
@ -80,6 +80,7 @@ python bot.py
|
||||
|------------|----------|-----------|
|
||||
| `DISCORD_TOKEN` | Токен бота | Discord Developer Portal |
|
||||
| `MORNING_TIME` | Время запуска утреннего дайджеста | `.env` (формат `ЧЧ:ММ`, по умолчанию `07:00`) |
|
||||
| `MORNING_CHANNEL_ID` | ID канала для утреннего дайджеста | Правый клик по каналу → Копировать ID |
|
||||
|
||||
## Зависимости
|
||||
```txt
|
||||
|
||||
@ -159,6 +159,8 @@ python -m pytest tests/ -v
|
||||
| Переменная | Описание | Где взять |
|
||||
|------------|----------|-----------|
|
||||
| `DISCORD_TOKEN` | Токен бота | [Discord Developer Portal](https://discord.com/developers/applications) |
|
||||
| `MORNING_TIME` | Время запуска утреннего дайджеста | `.env` (формат `ЧЧ:ММ`, по умолчанию `07:00`) |
|
||||
| `MORNING_CHANNEL_ID` | ID канала для утреннего дайджеста | Правый клик по каналу → Копировать ID |
|
||||
|
||||
## Зависимости
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import discord
|
||||
@ -113,6 +114,14 @@ class Scheduler:
|
||||
self.bot = bot
|
||||
self.morning_time = morning_time
|
||||
self._last_run_date = None
|
||||
# Канал для утреннего дайджеста (по умолчанию None — первый попавшийся)
|
||||
self._target_channel_id: int | None = None
|
||||
channel_id_str = os.getenv("MORNING_CHANNEL_ID")
|
||||
if channel_id_str:
|
||||
try:
|
||||
self._target_channel_id = int(channel_id_str)
|
||||
except ValueError:
|
||||
logger.warning("Неверное значение MORNING_CHANNEL_ID: %s", channel_id_str)
|
||||
self.morning_loop = tasks.loop(seconds=1.0)(self._check_and_run_morning)
|
||||
self._start_scheduler()
|
||||
|
||||
@ -150,6 +159,22 @@ class Scheduler:
|
||||
async def _run_morning(self):
|
||||
logger.info(f"Выполняю morning в {self.morning_time}")
|
||||
|
||||
# Если задан конкретный канал — отправляем туда
|
||||
if self._target_channel_id:
|
||||
channel = self.bot.get_channel(self._target_channel_id)
|
||||
if isinstance(channel, discord.TextChannel):
|
||||
if channel.permissions_for(channel.guild.me).send_messages:
|
||||
try:
|
||||
await channel.send("🌅 Утренний дайджест!")
|
||||
await run_morning(self.bot, channel)
|
||||
return
|
||||
except Exception as e:
|
||||
logger.error("Ошибка отправки в канал %s: %s", self._target_channel_id, e)
|
||||
return
|
||||
else:
|
||||
logger.warning("Канал с ID %s не найден или не текстовый — fallback", self._target_channel_id)
|
||||
|
||||
# Fallback: первый канал с правами send_messages
|
||||
for channel in self.bot.get_all_channels():
|
||||
if isinstance(channel, discord.TextChannel):
|
||||
if channel.permissions_for(channel.guild.me).send_messages:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user