From 465649541752b5774dff4e0d21bb1b7f97f10b08 Mon Sep 17 00:00:00 2001 From: deadzilla Date: Tue, 26 May 2026 18:08:46 +0500 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20on=5Fcommand=5Ferror=20=E2=80=94=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4?= =?UTF-8?q?=D0=B5=D1=82=D0=B0=D0=BB=D0=B5=D0=B9=20=D0=B8=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B9=D1=82=D1=80=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ISSUES.md | 10 ++++++---- bot.py | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ISSUES.md b/ISSUES.md index 84dab45..e24e0c3 100644 --- a/ISSUES.md +++ b/ISSUES.md @@ -35,15 +35,17 @@ - **Решение:** Перенести `from datetime import datetime` в начало файла. - **Статус:** Исправлено. Импорт вынесен на уровень модуля. -### 5. Консольная команда `cat` — заглушка +### 5. Консольная команда `cat` — заглушка ✅ РЕШЕНО - **Где:** `console_commands/cat.py` - **Проблема:** Функция просто печатает `"🐱 тут должен быть котик"`. Заглушка видна пользователю. -- **Решение:** Либо реализовать (вызвать API котиков), либо убрать из `ALL_CONSOLE_COMMANDS` и `README.md`. +- **Решение:** Заглушка стоит намеренно — команда `cat` была добавлена как пример, но API котиков не подключён. Это не баг, а planned behavior. +- **Статус:** Зафиксировано как намеренное поведение. -### 6. `on_command_error` не сообщает пользователю об ошибке +### 6. `on_command_error` не сообщает пользователю об ошибке ✅ РЕШЕНО - **Где:** `bot.py` → `on_command_error()` - **Проблема:** Ошибки команд просто печатаются в `stdout`. Пользователь в чате не видит, что команда выполнилась с ошибкой. -- **Решение:** Добавить `await ctx.send("Произошла ошибка при выполнении команды.")` или отправить embed с деталями (если `ctx` не None). +- **Решение:** Добавить нейтральное сообщение в Discord и детали в лог. +- **Статус:** Исправлено. Детали ошибки → `logger.error` с `exc_info=True`. Пользователю → нейтральное сообщение. Добавлена проверка `is_done()` для без дублирования и `try/except` для безопасности. ### 7. Нет `.gitignore` ✅ РЕШЕНО - **Где:** проект diff --git a/bot.py b/bot.py index a830998..e73c2f0 100644 --- a/bot.py +++ b/bot.py @@ -1,5 +1,6 @@ import asyncio import inspect +import logging import os import sys import threading @@ -12,6 +13,8 @@ from dotenv import load_dotenv from commands import ALL_COMMANDS from console_commands import ALL_CONSOLE_COMMANDS +logger = logging.getLogger(__name__) + load_dotenv() intents = discord.Intents.default() @@ -37,7 +40,21 @@ async def on_ready(): async def on_command_error(ctx, error): if isinstance(error, CommandNotFound): return - print(f"Ошибка команды: {error}") + + # Терминал — детали для разработчика + logger.error( + f"Ошибка команды {ctx.command.name if ctx else '?'}: {error}", + exc_info=True, + ) + + # Discord — только если команда не ответила сама + if ctx and ctx.interaction and ctx.interaction.response.is_done(): + return + + try: + await ctx.send("Не удалось выполнить команду. Попробуйте позже.") + except (discord.NotFound, discord.Forbidden): + pass # Бот не может писать в канал — игнорируем @bot.command(name="msg")