fix: fallback morning-дайджеста перебирает каналы целевого сервера вместо всех серверов
This commit is contained in:
parent
e2289e5092
commit
27eaa677fd
@ -223,6 +223,15 @@ class Scheduler:
|
||||
async def _run_morning(self):
|
||||
logger.info("Выполняю morning в %s", self.morning_time)
|
||||
|
||||
# Определяем целевой сервер для fallback
|
||||
target_guild: discord.Guild | None = None
|
||||
if self._target_channel_id:
|
||||
guild = self.bot.get_guild(
|
||||
(await self.bot.fetch_channel(self._target_channel_id)).guild.id
|
||||
)
|
||||
if guild:
|
||||
target_guild = guild
|
||||
|
||||
# Если задан конкретный канал — отправляем туда
|
||||
if self._target_channel_id:
|
||||
# fetch_channel — API-запрос, не зависит от кэша
|
||||
@ -242,17 +251,27 @@ class Scheduler:
|
||||
"Канал с ID %s не текстовый — fallback", self._target_channel_id
|
||||
)
|
||||
|
||||
# Fallback: первый канал с правами send_messages
|
||||
# Fallback: первый текстовый канал целевого сервера с правами send_messages
|
||||
guilds_to_check: list[discord.Guild] = []
|
||||
if target_guild:
|
||||
guilds_to_check.append(target_guild)
|
||||
guilds_to_check.extend(self.bot.guilds)
|
||||
|
||||
sent = False
|
||||
for channel in self.bot.get_all_channels():
|
||||
if isinstance(channel, discord.TextChannel):
|
||||
if channel.permissions_for(channel.guild.me).send_messages:
|
||||
for guild in guilds_to_check:
|
||||
for channel in guild.text_channels:
|
||||
if channel.permissions_for(guild.me).send_messages:
|
||||
try:
|
||||
await run_morning(self.bot, channel)
|
||||
sent = True
|
||||
return
|
||||
except Exception as e:
|
||||
logger.error("Ошибка отправки в #%s: %s", channel.name, e)
|
||||
logger.error(
|
||||
"Ошибка отправки в #%s (%s): %s",
|
||||
channel.name,
|
||||
guild.name,
|
||||
e,
|
||||
)
|
||||
continue
|
||||
if not sent:
|
||||
logger.error("Не удалось найти канал для отправки morning-дайджеста")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user