Убраны приватные атрибуты с объекта discord.py Bot: START_TIME вынесен на уровень модуля, _scheduler удалён (не использовался)
This commit is contained in:
parent
5a65be97d9
commit
bb9e50fb05
6
bot.py
6
bot.py
@ -23,6 +23,9 @@ if TYPE_CHECKING:
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Время запуска бота (на уровне модуля, чтобы не хранить на объекте discord.py Bot)
|
||||
START_TIME: float = time.time()
|
||||
|
||||
|
||||
class TextHelpCommand(commands.HelpCommand):
|
||||
"""Выводит справку по командам простым текстом вместо embed."""
|
||||
@ -104,7 +107,7 @@ class BotRunner:
|
||||
intents=intents,
|
||||
help_command=TextHelpCommand(),
|
||||
)
|
||||
self.bot._start_time = time.time()
|
||||
|
||||
self.stop_event = threading.Event()
|
||||
self.bot_ready = threading.Event()
|
||||
self.scheduler: SchedulerType | None = None
|
||||
@ -142,7 +145,6 @@ class BotRunner:
|
||||
|
||||
morning_time = os.getenv("MORNING_TIME", "07:00")
|
||||
self.scheduler = Scheduler(self.bot, morning_time)
|
||||
self.bot._scheduler = self.scheduler
|
||||
await self.scheduler.start()
|
||||
logger.info(
|
||||
"Планировщик запущен (время: %s, сервер: %s)", morning_time, guild.name
|
||||
|
||||
@ -13,9 +13,11 @@ class Status(commands.Cog):
|
||||
@commands.command(name="status")
|
||||
async def status(self, ctx: commands.Context) -> None:
|
||||
"""Статус бота: пинг к Discord gateway и время работы"""
|
||||
# Lazy import чтобы избежать циклического импорта (bot -> commands -> bot)
|
||||
from bot import START_TIME # noqa: F401
|
||||
|
||||
latency_ms = round(ctx.bot.latency * 1000, 1)
|
||||
start_time = getattr(ctx.bot, "_start_time", time.time())
|
||||
uptime_seconds = time.time() - start_time
|
||||
uptime_seconds = time.time() - START_TIME
|
||||
uptime_str = self._format_uptime(uptime_seconds)
|
||||
|
||||
embed = discord.Embed(
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
import time
|
||||
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from commands.status import Status
|
||||
|
||||
@ -14,9 +14,9 @@ class TestStatusCommand:
|
||||
"""Команда status отправляет embed-сообщение."""
|
||||
mock_ctx = MagicMock()
|
||||
mock_ctx.bot.latency = 0.042
|
||||
mock_ctx.bot._start_time = time.time()
|
||||
mock_ctx.send = AsyncMock(return_value=None)
|
||||
|
||||
with patch("bot.START_TIME", time.time()):
|
||||
cog = Status()
|
||||
await cog.status(cog, mock_ctx)
|
||||
|
||||
@ -30,9 +30,9 @@ class TestStatusCommand:
|
||||
"""Uptime форматируется корректно."""
|
||||
mock_ctx = MagicMock()
|
||||
mock_ctx.bot.latency = 0.050
|
||||
mock_ctx.bot._start_time = time.time() - 90061 # 1д 1ч 1м 1с
|
||||
mock_ctx.send = AsyncMock(return_value=None)
|
||||
|
||||
with patch("bot.START_TIME", time.time() - 90061): # 1д 1ч 1м 1с
|
||||
cog = Status()
|
||||
await cog.status(cog, mock_ctx)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user