Added iter for DB

This commit is contained in:
2022-09-02 09:47:18 +03:00
parent 646008e4d8
commit 99bf0769e5
7 changed files with 46 additions and 26 deletions

View File

@@ -1,4 +1,4 @@
__version__ = '1.0.1' __version__ = '1.0.2'
__title__ = "Pisya_bot" __title__ = "Pisya_bot"
__author__ = "beaconborn" __author__ = "beaconborn"
@@ -13,4 +13,4 @@ class VersionInfo(NamedTuple):
serial: int 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)

4
bot.py
View File

@@ -32,13 +32,9 @@ asyncio.run(work_with_cogs('load', bot))
@bot.event @bot.event
async def on_ready(): 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(f'Bot started')
logger.info('We have logged in as {0.user}'.format(bot)) 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('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( @bot.slash_command(

View File

@@ -3,7 +3,7 @@ import disnake
from disnake import Option, OptionType, Colour from disnake import Option, OptionType, Colour
from disnake.ext import commands from disnake.ext import commands
from lib import read_db from lib import DB_Reader
from lib import logger from lib import logger
@@ -23,15 +23,20 @@ class General(commands.Cog):
] ]
) )
async def info(self, inter, user=None): async def info(self, inter, user=None):
user_audio = None
default_audio = None
user = user or inter.author user = user or inter.author
user_audio = await read_db(inter.guild.id, user.id, column='usertracks') _user = DB_Reader(inter.guild.id)
default_audio = await read_db(inter.guild.id, user.id, column='defaulttracks') 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] rolelist = [r.mention for r in user.roles if r != inter.guild.default_role]
if rolelist: if rolelist:
roles = "\n".join(rolelist) roles = "\n".join(rolelist)
else: else:
roles = "Not added any role" roles = "Not added any role"
if user_audio: if user_audio:
audios = "" + "\n".join(sorted(user_audio.split(", "))) audios = "" + "\n".join(sorted(user_audio.split(", ")))
else: else:

View File

@@ -4,6 +4,7 @@ import disnake
import psutil import psutil
from disnake.ext import commands from disnake.ext import commands
from __init__ import version_info as _ve
from lib import determine_prefix, determine_time from lib import determine_prefix, determine_time
from lib import logger 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 @commands.Cog.listener() # this is a decorator for events/listeners
async def on_ready(self): async def on_ready(self):
logger.info(f'Cog {__name__.split(".")[1]} is ready!.') 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", @commands.slash_command(name="info_bot",
description='Shows general info about bot') # this is for making a command 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'Prefix: `{determine_prefix(self.bot, inter)}\n`'
f"Max audio duration: {determine_time(inter)} sec\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)) emb.set_footer(text="Information requested by: {}".format(inter.author.display_name))
await inter.response.send_message(embed=emb, ephemeral=True) await inter.response.send_message(embed=emb, ephemeral=True)

View File

@@ -1,6 +1,5 @@
import sqlite3 import sqlite3
import disnake
from lib import logger from lib import logger
@@ -8,12 +7,12 @@ from lib import logger
class DB_Reader: class DB_Reader:
def __init__(self, guildid: int = None): def __init__(self, guildid: int = None):
self.guildid = guildid self._guildid = guildid
self.list = self._read_db(self.guildid) self.list = self._read_db(self._guildid)
self._current_index = 0 self._current_index = 0
def __str__(self) -> str: def __str__(self) -> str:
return str(self.guildid) return str(self._guildid)
@classmethod @classmethod
def _read_db(cls, guildid: int) -> list: def _read_db(cls, guildid: int) -> list:
@@ -32,12 +31,12 @@ class DB_Reader:
class _DBAttrs: class _DBAttrs:
def __init__(self, def __init__(self,
userid, userid: int,
username, username: str,
nick, nick: str,
isbot, isbot: bool,
defaulttracks, defaulttracks: None or list,
usertracks): usertracks: None or list):
self.userid = userid self.userid = userid
self.username = username self.username = username
self.nick = nick self.nick = nick
@@ -68,7 +67,7 @@ class _ListGenerationIter:
_userid = self._list[self._current_index][0] _userid = self._list[self._current_index][0]
_username = self._list[self._current_index][1] _username = self._list[self._current_index][1]
_nick = self._list[self._current_index][2] _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] _defaulttracks = self._list[self._current_index][4]
_usertracks = self._list[self._current_index][5] _usertracks = self._list[self._current_index][5]

View File

@@ -2,13 +2,12 @@ import logging
class _CustomFormatter(logging.Formatter): class _CustomFormatter(logging.Formatter):
grey = "\x1b[38;20m" grey = "\x1b[38;20m"
yellow = "\x1b[33;20m" yellow = "\x1b[33;20m"
red = "\x1b[31;20m" red = "\x1b[31;20m"
bold_red = "\x1b[31;1m" bold_red = "\x1b[31;1m"
reset = "\x1b[0m" reset = "\x1b[0m"
format = "%(asctime)s - %(levelname)s - %(module)s \t- %(message)s" format = f"%(asctime)s - [%(levelname)s] -%(module)s- %(message)s"
FORMATS = { FORMATS = {
logging.DEBUG: grey + format + reset, logging.DEBUG: grey + format + reset,
@@ -18,9 +17,28 @@ class _CustomFormatter(logging.Formatter):
logging.CRITICAL: bold_red + format + reset 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): def format(self, record):
log_fmt = self.FORMATS.get(record.levelno) 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) return formatter.format(record)

View File

@@ -4,3 +4,4 @@ psutil~=5.9.1
pymediainfo~=5.1.0 pymediainfo~=5.1.0
pyNaCl~=1.5.0 pyNaCl~=1.5.0
python-dotenv~=0.20.0 python-dotenv~=0.20.0
ffmpeg-python~=0.2.0