From 8ac74ccd44a6561e9c3da731ebd4ae6a68ba0dbe Mon Sep 17 00:00:00 2001 From: beacon Date: Tue, 23 Aug 2022 20:44:19 +0300 Subject: [PATCH] edditing code --- .idea/discord.xml | 7 +++++ .idea/jsonSchemas.xml | 25 +++++++++++++++++ cogs/admin.py | 64 +++++++++++++++++++++++++++++++++++++++++++ cogs/audio.py | 25 ++++++----------- cogs/fun.py | 16 +++++++++++ cogs/general.py | 29 ++------------------ lib/Comands.py | 6 ++-- lib/Player.py | 5 ++-- test.py | 9 ++++-- 9 files changed, 133 insertions(+), 53 deletions(-) create mode 100644 .idea/discord.xml create mode 100644 .idea/jsonSchemas.xml create mode 100644 cogs/admin.py create mode 100644 cogs/fun.py diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..d8e9561 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml new file mode 100644 index 0000000..7cf8182 --- /dev/null +++ b/.idea/jsonSchemas.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cogs/admin.py b/cogs/admin.py new file mode 100644 index 0000000..07322f2 --- /dev/null +++ b/cogs/admin.py @@ -0,0 +1,64 @@ +import logging +from asyncio import sleep + +import disnake + +from disnake.ext import commands, tasks + +from lib.Comands import read_json +from lib.DB import fill_bd, prepare_db + + +class Admin(commands.Cog, name='Admin'): + def __init__(self, bot): + self.bot = bot # defining bot as global var in class + # self.activity.start() + + @commands.Cog.listener() # this is a decorator for events/listeners + async def on_ready(self): + for g in self.bot.get_all_members(): + await prepare_db(g.guild.id) + for g in self.bot.get_all_members(): + await fill_bd(g.name, g.id, g.bot, g.nick, g.guild.id) + + logging.info(f'Cog {__name__.split(".")[1]} is ready!.') + + @tasks.loop(seconds=20) + async def activity(self): + await self.bot.change_presence( + activity=disnake.Activity( + name=f'Users: {str(len(self.bot.users))}', + type=3 + ) + ) + await sleep(10) + await self.bot.change_presence( + activity=disnake.Activity( + name=f'Servers: {str(len(self.bot.guilds))}', + type=3 + ) + ) + + @commands.Cog.listener() + async def on_guild_join(self, guild): + for g in guild.members: + await fill_bd(g.name, g.id, g.bot, g.nick, guild.id) + + @commands.Cog.listener() + async def on_member_join(self, member): + await fill_bd(member.name, member.id, member.bot, member.nick, member.guild.id) + + bot_role = read_json(member.guild.id, 'bot_role') # Get bot role + guest_role = read_json(member.guild.id, 'guest_role') # Get guest role + + if bot_role or guest_role: + if member.bot == 0: + role = disnake.utils.get(member.guild.roles, id=guest_role) + else: + role = disnake.utils.get(member.guild.roles, id=bot_role) + logging.info(f"Adding to {member} role {role}") + await member.add_roles(role) + + +def setup(bot): # an extension must have a setup function + bot.add_cog(Admin(bot)) # adding a cog diff --git a/cogs/audio.py b/cogs/audio.py index bae8854..efabd55 100644 --- a/cogs/audio.py +++ b/cogs/audio.py @@ -1,4 +1,5 @@ import logging +import random import tempfile from os import path, makedirs, rename, remove @@ -23,16 +24,6 @@ class Audio(commands.Cog): # Read audio from DB audio_db = await read_db(member.guild.id, member.id, 'usertracks') def_audio_db = await read_db(member.guild.id, member.id, 'defaulttracks') - print(f'Trigger role: {_role}') - print(f' Memder roles {member.roles}') - print(role.id in _role for role in member.roles) - - print(f'Audio DB: {audio_db}') - print(f'Def audio DB: {def_audio_db}') - print(f' Memder is bot {member.bot}') - print(f' Before channel {before.channel}') - print('------------------------------------------') - if audio_db is not None: audio_db = audio_db.split(', ') # Need to fix creating list for i in range(len(audio_db)): @@ -45,16 +36,16 @@ class Audio(commands.Cog): if def_audio_db or audio_db is not None: if def_audio_db is None: def_audio_db = [] if audio_db is None: audio_db = [] - print(audio_db, def_audio_db) logging.info(f'Play audio from DB') full_audio = def_audio_db + audio_db - - if not self.bot.voice_clients: - await play_audio(full_audio, self.bot, after.channel) - elif (role.id in _role for role in member.roles): + audio = random.choice(full_audio) + await play_audio(audio, self.bot, after.channel) + elif len(member.roles) == 1 or _role is None: + logging.info(f'Skip playing') + elif any(str(role.id) in _role for role in member.roles): logging.info(f'Play audio from list by role') - if not self.bot.voice_clients: - await play_audio(def_audio_ls, self.bot, after.channel) + audio = random.choice(def_audio_ls) + await play_audio(audio, self.bot, after.channel) else: logging.info(f'Skip playing') diff --git a/cogs/fun.py b/cogs/fun.py new file mode 100644 index 0000000..f78a4a5 --- /dev/null +++ b/cogs/fun.py @@ -0,0 +1,16 @@ +import logging + +from disnake.ext import commands + + +class Fun(commands.Cog, name='Fun'): + def __init__(self, bot): + self.bot = bot # defining bot as global var in class + + @commands.Cog.listener() # this is a decorator for events/listeners + async def on_ready(self): + logging.info(f'Cog {__name__.split(".")[1]} is ready!.') + + +def setup(bot): # an extension must have a setup function + bot.add_cog(Fun(bot)) # adding a cog diff --git a/cogs/general.py b/cogs/general.py index 8fe475c..70ecb74 100644 --- a/cogs/general.py +++ b/cogs/general.py @@ -4,8 +4,8 @@ import disnake from disnake import Option, OptionType, Colour from disnake.ext import commands -from lib.Comands import read_json, write_json -from lib.DB import fill_bd, prepare_db, work_with_db, read_db +from lib.Comands import write_json +from lib.DB import work_with_db, read_db class General(commands.Cog): @@ -14,33 +14,8 @@ class General(commands.Cog): @commands.Cog.listener() # this is a decorator for events/listeners async def on_ready(self): - for g in self.bot.get_all_members(): - await prepare_db(g.guild.id) - for g in self.bot.get_all_members(): - await fill_bd(g.name, g.id, g.bot, g.nick, g.guild.id) - logging.info(f'Cog {__name__.split(".")[1]} is ready!.') - @commands.Cog.listener() - async def on_guild_join(self, guild): - for g in guild.members: - await fill_bd(g.name, g.id, g.bot, g.nick, guild.id) - - @commands.Cog.listener() - async def on_member_join(self, member): - await fill_bd(member.name, member.id, member.bot, member.nick, member.guild.id) - - bot_role = read_json(member.guild.id, 'bot_role') # Get bot role - guest_role = read_json(member.guild.id, 'guest_role') # Get guest role - - if bot_role or guest_role: - if member.bot == 0: - role = disnake.utils.get(member.guild.roles, id=guest_role) - else: - role = disnake.utils.get(member.guild.roles, id=bot_role) - logging.info(f"Adding to {member} role {role}") - await member.add_roles(role) - @commands.Cog.listener() async def on_member_update(self, before: disnake.Member, after: disnake.Member): sql_update_query = f"""UPDATE "{after.guild.id}" set nick = ? where userid = ?""" diff --git a/lib/Comands.py b/lib/Comands.py index cdd04f4..5c9672a 100644 --- a/lib/Comands.py +++ b/lib/Comands.py @@ -17,7 +17,7 @@ async def list_files(fold: str = 'audio'): return fl[2] -async def read_json(guild: int, _param: str) -> int or str: +async def read_json(guild: int, _param: str): """ Reads Json file to determite config strings :param guild: ID of Guild @@ -25,6 +25,7 @@ async def read_json(guild: int, _param: str) -> int or str: :return: value of parameter """ with open('prefix.json', 'r', encoding='utf-8') as fp: # Open the JSON + parameter = None try: _json = json.load(fp) # Load the custom prefixes except TypeError: @@ -35,10 +36,9 @@ async def read_json(guild: int, _param: str) -> int or str: try: parameter = guild_conf[f"{_param}"] except: - parameter = None + pass except: pass - return parameter diff --git a/lib/Player.py b/lib/Player.py index d989c9e..6777f9d 100644 --- a/lib/Player.py +++ b/lib/Player.py @@ -1,13 +1,12 @@ import logging -import random from asyncio import sleep from disnake import FFmpegPCMAudio -async def play_audio(full_audio, bot, vc): +async def play_audio(audio, bot, vc): if not bot.voice_clients: - audio = random.choice(full_audio) + logging.info(audio) logging.error(f'Playing: {audio}') await sleep(1) vp = await vc.connect() diff --git a/test.py b/test.py index ea7627c..2f69ef5 100644 --- a/test.py +++ b/test.py @@ -13,16 +13,19 @@ if not path.isfile('prefix.json'): with open('prefix.json', 'w+', encoding='utf-8') as f: f.write("") -intents = disnake.Intents(messages=True, guilds=True, message_content=True, voice_states=True, members=True) +intents = disnake.Intents(messages=True, + guilds=True, + message_content=True, + voice_states=True, + members=True) bot = commands.Bot(command_prefix=determine_prefix, intents=intents, - status=disnake.Status.idle, reload=True, test_guilds=[929446191270330410, 987120286933602354]) logging.basicConfig(stream=sys.stdout, filemode='w', level='INFO', - format='%(asctime)s - %(levelname)s - %(threadName)s - %(message)s') + format='%(asctime)s - %(levelname)s - %(module)s - %(message)s') for filename in cog_list(): try: