fix: H4 — защита от дублирования cogs при reconnect в on_ready
- Добавлена проверка if self.bot.cogs: return перед добавлением cogs - on_ready может сработать несколько раз при reconnect gateway - Без защиты команды регистрировались бы заново каждый раз 230 тестов проходят.
This commit is contained in:
parent
ea0d50df4f
commit
e1ab1e3a61
@ -157,7 +157,7 @@ def pressure_to_mmhg(mb):
|
||||
|
||||
---
|
||||
|
||||
### H4. Cog-классы добавляются в `on_ready` -- риск дублирования
|
||||
### H4. Cog-классы добавляются в `on_ready` -- риск дублирования — **ИСПРАВЛЕНО**
|
||||
|
||||
**Файл:** `bot.py`, строки 44-49
|
||||
|
||||
@ -539,7 +539,7 @@ DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated and slated for r
|
||||
3. [x] H1: Защитить `format_weather_data_for_console` от пустого списка — **выполнено**
|
||||
4. [x] H2: Отсортировать ключи `translate_weather` по убыванию длины — **выполнено**
|
||||
5. [x] H3: Исправить `pressure_to_mmhg` -- `not mb` -> `mb is None or mb == ""` — **выполнено**
|
||||
6. [ ] H4: Добавить защиту от дублирования cogs в `on_ready`
|
||||
6. [x] H4: Добавить защиту от дублирования cogs в `on_ready` — **выполнено**
|
||||
7. [ ] H5: Заменить `asyncio.run()` на `async def` в fetch-тестах (50+ тестов)
|
||||
8. [ ] H6: Добавить HTTPError в retry-блок `fetch_weather`
|
||||
9. [ ] H7: Добавить HTTPException/BadRequest в `on_command_error`
|
||||
|
||||
4
bot.py
4
bot.py
@ -45,6 +45,10 @@ class BotRunner:
|
||||
@self.bot.event
|
||||
async def on_ready() -> None:
|
||||
logger.info("Бот вошёл как %s", self.bot.user)
|
||||
# on_ready может сработать несколько раз (reconnect) — защита от дублирования cogs
|
||||
if self.bot.cogs:
|
||||
logger.info("Cog-модули уже загружены, пропускаю")
|
||||
return
|
||||
for cog_class in ALL_COMMANDS:
|
||||
cog = cog_class()
|
||||
await self.bot.add_cog(cog)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user