Логгирование с помощью logger

This commit is contained in:
2025-08-22 14:24:37 +07:00
parent cada9f310a
commit 99feb5e125
5 changed files with 19 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
FROM python:3
WORKDIR /usr/src/moderation-bot
RUN apt update && apt install -y postgresql-client
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

View File

@@ -12,6 +12,7 @@ from fnmatch import fnmatch
import traceback
import json
import re
import logging
from constants.global_constants import *
from libs.tokens_formatter import TOKENS
@@ -26,7 +27,11 @@ from sqlalchemy.schema import CreateTable
import tldextract
logging.basicConfig(level=logging.INFO, force=True, format="%(asctime)s %(name)s %(levelname)s: %(message)s", datefmt="%H:%M:%S")
class AnyBots(commands.Bot):
logger = logging.getLogger(__name__)
'''
@@ -44,7 +49,7 @@ class AnyBots(commands.Bot):
async def on_ready(self):
self.krekchat = await self.fetch_guild(constants["krekchat"])
print(self.krekchat.name)
self.logger.info(self.krekchat.name)
self.sponsors = [disnake.utils.get(self.krekchat.roles, id=i) for i in constants["sponsors"]]
self.text_mute = disnake.utils.get(self.krekchat.roles, id=constants["mutes"][0])
self.voice_mute = disnake.utils.get(self.krekchat.roles, id=constants["mutes"][1])
@@ -62,7 +67,7 @@ class AnyBots(commands.Bot):
self.hierarchy = [disnake.utils.get(self.krekchat.roles, id=i) for i in constants["hierarchy"]]
# /lists
await self.change_presence(status=disnake.Status.online, activity=disnake.Game("Работаю"))
print(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: KrekModBot activated")
self.logger.info(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: KrekModBot activated")
def TimeFormater(self, time_str: str = "", *,
years: float = 0, months: float = 0, weeks: float = 0, days: float = 0, hours: float = 0, minutes: float = 0, seconds: float = 0,
@@ -308,7 +313,7 @@ class MainBot(AnyBots):
# if self.stop_event.is_set():
# pass
# else:
# print(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: Соединение с дискордом разорвано")
# self.logger.error(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: Соединение с дискордом разорвано")
# await self.BotOff()
@staticmethod
@@ -319,7 +324,7 @@ class MainBot(AnyBots):
try:
return await func(*args, **kwargs)
except Exception:
print(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: [ERROR] {func.__name__}:\n{traceback.format_exc()}")
logging.exception(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: [ERROR] {func.__name__}:\n{traceback.format_exc()}")
return wrapper
@tasks.loop(seconds=30)
@@ -331,7 +336,7 @@ class MainBot(AnyBots):
continue
if not loop.is_running():
print(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: Обнаружено падение {loop.coro.__name__}, перезапуск цикла...")
self.logger.error(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: Обнаружено падение {loop.coro.__name__}, перезапуск цикла...")
loop.cancel()
@@ -640,19 +645,19 @@ async def run_bot(bot, token, stop_event):
try:
await bot.start(token)
except Exception as e:
print(f"Бот {bot.user.name if hasattr(bot, 'user') else 'Unknown'} упал с ошибкой: {e}")
logging.exception(f"Бот {bot.user.name if hasattr(bot, 'user') else 'Unknown'} упал с ошибкой: {e}")
stop_event.set() # Сигнализируем об остановке
async def monitor_stop(stop_event, bots):
await stop_event.wait()
print(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: Получен сигнал остановки, завершаю всех ботов...")
logging.info(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: Получен сигнал остановки, завершаю всех ботов...")
for bot in bots:
if not bot.is_closed():
try:
await bot.close()
except Exception as e:
print(f"Ошибка при закрытии бота: {e}")
logging.exception(f"Ошибка при закрытии бота: {e}")
await asyncio.sleep(0.1)
@@ -684,9 +689,9 @@ async def main():
await asyncio.gather(*bot_tasks, monitor_task)
except KeyboardInterrupt:
print("Боты остановлены по запросу пользователя")
logging.info("Боты остановлены по запросу пользователя")
except Exception as e:
print(f"Произошла критическая ошибка: {e}")
logging.exception(f"Произошла критическая ошибка: {e}")
finally:
if bot is not None:
await bot.BotOff()

View File

@@ -26,7 +26,7 @@ class AdminModule(commands.Cog):
@commands.Cog.listener()
async def on_ready(self):
print(f'KrekModBot admin module activated')
self.client.logger.info(f'KrekModBot admin module activated')
@commands.slash_command(name="bot_mod_off")
async def BotModOff(self, ctx: disnake.ApplicationCommandInteraction):

View File

@@ -29,7 +29,7 @@ class ModerModule(commands.Cog):
@commands.Cog.listener()
async def on_ready(self):
print(f'KrekModBot moderation module activated')
self.client.logger.info(f'KrekModBot moderation module activated')
@commands.slash_command(name="действие")
async def action_slash(self, ctx: disnake.AppCmdInter, member: disnake.Member):

View File

@@ -24,7 +24,7 @@ class UIModule(commands.Cog):
@commands.Cog.listener()
async def on_ready(self):
print(f'KrekModBot UI module activated')
self.client.logger.info(f'KrekModBot UI module activated')
@commands.slash_command(description="Показывает действительные наказания пользователя", name="наказания")
async def penalties(self, ctx: disnake.AppCmdInter, input_member: disnake.Member | None= None):