From 99bf0769e5f9bcbb96df50a1a30dcf946ec3db85 Mon Sep 17 00:00:00 2001 From: Slava Date: Fri, 2 Sep 2022 09:47:18 +0300 Subject: [PATCH] Added iter for DB --- __init__.py | 4 ++-- bot.py | 4 ---- cogs/general.py | 13 +++++++++---- cogs/info.py | 5 +++-- lib/DB_Worker.py | 21 ++++++++++----------- lib/Logger.py | 24 +++++++++++++++++++++--- requirements.txt | 1 + 7 files changed, 46 insertions(+), 26 deletions(-) diff --git a/__init__.py b/__init__.py index d6fdf46..d65337e 100644 --- a/__init__.py +++ b/__init__.py @@ -1,4 +1,4 @@ -__version__ = '1.0.1' +__version__ = '1.0.2' __title__ = "Pisya_bot" __author__ = "beaconborn" @@ -13,4 +13,4 @@ class VersionInfo(NamedTuple): serial: int -version_info: VersionInfo = VersionInfo(major=1, minor=0, micro=1, releaselevel="alpha", serial=0) +version_info: VersionInfo = VersionInfo(major=1, minor=0, micro=5, releaselevel="alpha", serial=0) diff --git a/bot.py b/bot.py index 40664b1..77d871e 100755 --- a/bot.py +++ b/bot.py @@ -32,13 +32,9 @@ asyncio.run(work_with_cogs('load', bot)) @bot.event async def on_ready(): - slash_commands = '\n\t* '.join(f'{r.name}: {r.description}' for r in bot.slash_commands) - _commands = '\n\t* '.join(f'{r.name}: {r.description}' for r in bot.commands) logger.info(f'Bot started') logger.info('We have logged in as {0.user}'.format(bot)) logger.info('Version of bot is - v{0.major}.{0.minor}.{0.micro}-{0.releaselevel}'.format(version_info)) - logger.info(f'list of all slash commands: \n\t* {slash_commands}') - logger.info(f'list of all commands: \n\t* {_commands}') @bot.slash_command( diff --git a/cogs/general.py b/cogs/general.py index 63d5ebc..2c97801 100644 --- a/cogs/general.py +++ b/cogs/general.py @@ -3,7 +3,7 @@ import disnake from disnake import Option, OptionType, Colour from disnake.ext import commands -from lib import read_db +from lib import DB_Reader from lib import logger @@ -23,15 +23,20 @@ class General(commands.Cog): ] ) async def info(self, inter, user=None): + user_audio = None + default_audio = None user = user or inter.author - user_audio = await read_db(inter.guild.id, user.id, column='usertracks') - default_audio = await read_db(inter.guild.id, user.id, column='defaulttracks') + _user = DB_Reader(inter.guild.id) + for r in _user: + if r.userid == user.id: + user_audio = r.usertracks + default_audio = r.defaulttracks + rolelist = [r.mention for r in user.roles if r != inter.guild.default_role] if rolelist: roles = "\n".join(rolelist) else: roles = "Not added any role" - if user_audio: audios = "• " + "\n• ".join(sorted(user_audio.split(", "))) else: diff --git a/cogs/info.py b/cogs/info.py index 2553e14..1e98b1d 100644 --- a/cogs/info.py +++ b/cogs/info.py @@ -4,6 +4,7 @@ import disnake import psutil from disnake.ext import commands +from __init__ import version_info as _ve from lib import determine_prefix, determine_time from lib import logger @@ -15,7 +16,6 @@ class Bot_info(commands.Cog, name='Bot Info'): @commands.Cog.listener() # this is a decorator for events/listeners async def on_ready(self): logger.info(f'Cog {__name__.split(".")[1]} is ready!.') - logger.info(f'{[names.name for names in self.bot.users]}') @commands.slash_command(name="info_bot", description='Shows general info about bot') # this is for making a command @@ -32,7 +32,8 @@ class Bot_info(commands.Cog, name='Bot Info'): f'Prefix: `{determine_prefix(self.bot, inter)}\n`' f"Max audio duration: {determine_time(inter)} sec\n" ) - emb.add_field(name="Bot owner", value=f"<@{self.bot.owner_id}>") + emb.add_field(name="Bot info:", value=f"Bot owner: <@{self.bot.owner_id}>\n" + f"Bot version: {_ve.major}.{_ve.minor}.{_ve.micro}-{_ve.releaselevel}") emb.set_footer(text="Information requested by: {}".format(inter.author.display_name)) await inter.response.send_message(embed=emb, ephemeral=True) diff --git a/lib/DB_Worker.py b/lib/DB_Worker.py index 4e0d0c6..798514e 100644 --- a/lib/DB_Worker.py +++ b/lib/DB_Worker.py @@ -1,6 +1,5 @@ import sqlite3 -import disnake from lib import logger @@ -8,12 +7,12 @@ from lib import logger class DB_Reader: def __init__(self, guildid: int = None): - self.guildid = guildid - self.list = self._read_db(self.guildid) + self._guildid = guildid + self.list = self._read_db(self._guildid) self._current_index = 0 def __str__(self) -> str: - return str(self.guildid) + return str(self._guildid) @classmethod def _read_db(cls, guildid: int) -> list: @@ -32,12 +31,12 @@ class DB_Reader: class _DBAttrs: def __init__(self, - userid, - username, - nick, - isbot, - defaulttracks, - usertracks): + userid: int, + username: str, + nick: str, + isbot: bool, + defaulttracks: None or list, + usertracks: None or list): self.userid = userid self.username = username self.nick = nick @@ -68,7 +67,7 @@ class _ListGenerationIter: _userid = self._list[self._current_index][0] _username = self._list[self._current_index][1] _nick = self._list[self._current_index][2] - _isbot = self._list[self._current_index][3] + _isbot = bool(self._list[self._current_index][3]) _defaulttracks = self._list[self._current_index][4] _usertracks = self._list[self._current_index][5] diff --git a/lib/Logger.py b/lib/Logger.py index 541ccb9..118f4b8 100644 --- a/lib/Logger.py +++ b/lib/Logger.py @@ -2,13 +2,12 @@ import logging class _CustomFormatter(logging.Formatter): - grey = "\x1b[38;20m" yellow = "\x1b[33;20m" red = "\x1b[31;20m" bold_red = "\x1b[31;1m" reset = "\x1b[0m" - format = "%(asctime)s - %(levelname)s - %(module)s \t- %(message)s" + format = f"%(asctime)s - [%(levelname)s] -%(module)s- %(message)s" FORMATS = { logging.DEBUG: grey + format + reset, @@ -18,9 +17,28 @@ class _CustomFormatter(logging.Formatter): logging.CRITICAL: bold_red + format + reset } + old_factory = logging.getLogRecordFactory() + + def _record_factory(*args, **kwargs): + record = _CustomFormatter.old_factory(*args, **kwargs) + _module = record.module + _levelname = record.levelname + if len(record.module) % 2 == 0 and len(record.module) < 12: + _module = ' ' * ((12 - len(record.module)) // 2) + record.module + ' ' * ((12 - len(record.module)) // 2) + elif len(record.module) % 2 == 1 and len(record.module) <12: + _module = ' ' * ((12 - len(record.module)) // 2) + record.module + ' ' * ((12 - len(record.module)) // 2 + 1) + if len(record.levelname) % 2 == 0 and len(record.levelname) < 8: + _levelname = ' ' * ((8 - len(record.levelname)) // 2) + record.levelname + ' ' * ((8 - len(record.levelname)) // 2) + elif len(record.levelname) % 2 == 1 and len(record.module) < 8: + _levelname = ' ' * ((8 - len(record.levelname)) // 2) + record.levelname + ' ' * ((8 - len(record.levelname)) // 2 + 1) + record.module = _module + record.levelname = _levelname + return record + + logging.setLogRecordFactory(_record_factory) def format(self, record): log_fmt = self.FORMATS.get(record.levelno) - formatter = logging.Formatter(log_fmt) + formatter = logging.Formatter(log_fmt, "%d-%m-%Y %H:%M:%S") return formatter.format(record) diff --git a/requirements.txt b/requirements.txt index 0e0a8df..e9fff52 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ psutil~=5.9.1 pymediainfo~=5.1.0 pyNaCl~=1.5.0 python-dotenv~=0.20.0 +ffmpeg-python~=0.2.0 \ No newline at end of file