From 25c76bd55090fd013ad69b88b80857567c347c44 Mon Sep 17 00:00:00 2001 From: Slava Date: Wed, 29 Jun 2022 08:04:24 +0300 Subject: [PATCH] trying to fix --- .gitignore | 2 +- .idea/discord-bot.iml | 12 +++ .idea/encodings.xml | 1 + test.py | 197 ++++++++++++++++++------------------------ test2.py | 38 ++++++++ 5 files changed, 134 insertions(+), 116 deletions(-) create mode 100644 .idea/discord-bot.iml create mode 100644 test2.py diff --git a/.gitignore b/.gitignore index 3deac2e..083a540 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ /tmp/ /audio/*/ -/test2.py + /user.db *.json *.pyc diff --git a/.idea/discord-bot.iml b/.idea/discord-bot.iml new file mode 100644 index 0000000..4559181 --- /dev/null +++ b/.idea/discord-bot.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 39dbfd3..ad8a72e 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -3,5 +3,6 @@ + \ No newline at end of file diff --git a/test.py b/test.py index 035eadd..1ace354 100644 --- a/test.py +++ b/test.py @@ -4,14 +4,25 @@ import sqlite3 import sys import threading from os import walk, path, makedirs, remove, rename, listdir -from typing import List, Union, Any, Dict import discord from discord.ext import commands from dislash import InteractionClient, Option, OptionType, OptionChoice +def determine_prefix(bot, msg): + guild = msg.guild + base = Commands.read_json(guild.id, 'prefix') or DEFAULT_PREFIX # Get bot role + return base + + bot_owner = 386629192743256065 +DEFAULT_PREFIX = "$" # The prefix you want everyone to have if you don't define your own + +intents = discord.Intents.default() +intents.members = True +bot = commands.Bot(command_prefix=determine_prefix, guild_subscriptions=True, intents=intents) +inter_client = InteractionClient(bot) class DB: @@ -49,8 +60,8 @@ class DB: DB.work_with_db(sqlite_insert_with_param, data_tuple) @staticmethod - def add_audio(guildid: int, user: int, audio: str): - sql_update_query = f"""UPDATE "{guildid}" set track = ? where userid = ?""" + def add_audio(guild: int, user: int, audio: str): + sql_update_query = f"""UPDATE "{guild}" set track = ? where userid = ?""" data_tuple = (audio, user) DB.work_with_db(sql_update_query, data_tuple) @@ -72,33 +83,33 @@ class CogsPrepare: @staticmethod def cog_list(): cogs_list = [] - for filename in listdir('./cogs'): - if filename.endswith('.py'): - cogs_list.append(filename[:-3]) + for _filename in listdir('./cogs'): + if _filename.endswith('.py'): + cogs_list.append(_filename[:-3]) return cogs_list @staticmethod async def cogs_load(): - for filename in CogsPrepare.cog_list(): - bot.load_extension(f'cogs.{filename}') - print(f'Load cog {filename}') + for _filename in CogsPrepare.cog_list(): + bot.load_extension(f'cogs.{_filename}') + print(f'Load cog {_filename}') @staticmethod async def cogs_unload(): - for filename in CogsPrepare.cog_list(): - bot.unload_extension(f'cogs.{filename}') - print(f'Unload cog {filename}') + for _filename in CogsPrepare.cog_list(): + bot.unload_extension(f'cogs.{_filename}') + print(f'Unload cog {_filename}') - @classmethod + @staticmethod async def work_with_cogs(what_do, cogs): - for filename in cogs: + for _filename in cogs: if what_do == "load": - bot.load_extension(f'cogs.{filename}') + bot.load_extension(f'cogs.{_filename}') elif what_do == 'unload': - bot.unload_extension(f'cogs.{filename}') + bot.unload_extension(f'cogs.{_filename}') elif what_do == 'reload': - bot.reload_extension(f'cogs.{filename}') - logging.info(f'{what_do.capitalize()}ing cog {filename}') + bot.reload_extension(f'cogs.{_filename}') + logging.info(f'{what_do}ing cog {_filename}') @staticmethod async def cog_load(ctx, cog): @@ -116,45 +127,6 @@ class CogsPrepare: await ctx.send(f'Error: unknown error with {cog}') -threading.current_thread().name = "main" -logging.basicConfig(stream=sys.stdout, filemode='w', level='INFO', - format='%(asctime)s - %(levelname)s - %(threadName)s - %(message)s') - -DEFAULT_PREFIX = "$" # The prefix you want everyone to have if you don't define your own - -if not path.isfile('prefix.json'): - with open('prefix.json', 'w+') as f: - f.write("") - f.close() - - -def determine_prefix(bot, msg): - guild = msg.guild - base = Commands.read_json(guild.id, 'prefix') or DEFAULT_PREFIX # Get bot role - return base - - -intents = discord.Intents.default() -intents.members = True -bot = commands.Bot(command_prefix=determine_prefix, guild_subscriptions=True, intents=intents) -inter_client = InteractionClient(bot) - - -for filename in CogsPrepare.cog_list(): - try: - bot.load_extension(f'cogs.{filename}') - logging.info(f'Loaded cog {filename}') - - except commands.ExtensionNotFound: - logging.error(f"Error: {filename} couldn't be found to load.") - - except commands.ExtensionFailed: - logging.error(f'Error: {filename} failed to load properly.') - - except commands.ExtensionError: - logging.error(f'Error: unknown error with {filename}') - - class Commands: @staticmethod async def set_prefix(ctx, prefix: str): @@ -174,14 +146,13 @@ class Commands: return files @staticmethod - async def read_json(guild: int, param): + async def read_json(guild: int, param: str): parameter = None try: with open('prefix.json', 'r', encoding='utf-8') as fp: # Open the JSON - jsonObject = json.load(fp) # Load the custom prefixes + jsonObject = json.load(fp) # Load the custom prefixes except TypeError: jsonObject = {} - print(type(jsonObject)) if guild: # If the guild exists try: guild_conf = jsonObject[f"{guild}"] @@ -195,39 +166,58 @@ class Commands: return parameter @staticmethod - async def write_json(guild, param_name, param): - with open('prefix.json', 'r', encoding='utf-8') as fp: + async def write_json(guild: int, param_name: str, param: str or int): + with open('prefix.json', 'r', encoding='utf-8') as _f: + _jsonObject = json.load(_f) try: - jsonObject: dict = json.load(fp) - except: - jsonObject = {} - print(type(jsonObject)) - try: - jsonObject[f"{guild}"][f"{param_name}"] = param + _guild_conf = _jsonObject[f"{guild}"] except KeyError: - print(jsonObject) - print('--------') - new = {f"{guild}": "{}"} - print(new) - jsonObject.update(new) - try: - json_param = json.load(jsonObject[f"{guild}"]) - except KeyError: - json_param = {} - print(type(json_param)) - print(param_name) - print(param) - new = {f"{param_name}": f"{param}"} - print(type(json_param)) - print(new) - json_param.update(new) - # jsonObject[str(guild)] = json_param + _guild_conf = {} + try: + _param = _guild_conf[f"{param_name}"] + except KeyError: + _param = {} + print(f'json is {_jsonObject}\n type {type(_jsonObject)}' + f' Guild is {guild}\n type {type(_param)}' + f' Param name is {param_name}\n type {type(_param)}' + f' param is {param} type {type(_param)}') + _new_param = {f"{param_name}": f'{param}'} + _new_guild = {f"{guild}": {}} + _jsonObject.update(_new_guild) + _guild_conf = _jsonObject[f"{guild}"] + print(f"Guild conf is: {_guild_conf}") + _param.update(_new_param) + print(f"Param is: {_param}") + _guild_conf.update(_param) - with open("prefix.json", "w") as fl: - json.dump(jsonObject, fl) - fl.close() + with open("prefix.json", "w") as _f: + json.dump(_jsonObject, _f) + _f.close() +threading.current_thread().name = "main" +logging.basicConfig(stream=sys.stdout, filemode='w', level='INFO', + format='%(asctime)s - %(levelname)s - %(threadName)s - %(message)s') + +if not path.isfile('prefix.json'): + with open('prefix.json', 'w+') as f: + f.write("") + f.close() + +for filename in CogsPrepare.cog_list(): + try: + bot.load_extension(f'cogs.{filename}') + logging.info(f'Loaded cog {filename}') + + except commands.ExtensionNotFound: + logging.error(f"Error: {filename} couldn't be found to load.") + + except commands.ExtensionFailed: + logging.error(f'Error: {filename} failed to load properly.') + + except commands.ExtensionError: + logging.error(f'Error: unknown error with {filename}') + @bot.event async def on_ready(): @@ -315,8 +305,8 @@ async def upload_audio(ctx, user=None): @bot.command(name="set_prefix") @commands.has_permissions(administrator=True) -async def command_setprefix(ctx, prefix: str): - await self.Commands.set_prefix(ctx, prefix) +async def command_set_prefix(ctx, prefix: str): + await Commands.set_prefix(ctx, prefix) @inter_client.slash_command( @@ -326,33 +316,10 @@ async def command_setprefix(ctx, prefix: str): Option("prefix", "Specify prefix", OptionType.STRING, required=True), ] ) -async def slash_setprefix(ctx, prefix: str): +async def slash_set_prefix(ctx, prefix: str): await Commands.set_prefix(ctx, prefix) -# @inter_client.slash_command( -# name="cogs_load", -# description="Load cogs", -# ) -# async def slash_cogs_load(ctx): -# if ctx.author.id == bot_owner: -# await CogsPrepare.cogs_load() -# await ctx.reply('Cogs loaded') -# else: -# await ctx.reply('You`re not bot owner') -# -# @inter_client.slash_command( -# name="cogs_unload", -# description="Unload cogs", -# ) -# async def slash_cogs_unload(ctx): -# if ctx.author.id == bot_owner: -# await CogsPrepare.cogs_unload() -# await ctx.reply('Cogs unloaded') -# else: -# await ctx.reply('You`re not bot owner') - - @inter_client.slash_command( name="info", description="Read list of tracks for user", @@ -429,7 +396,7 @@ async def set_bot_role(ctx, role): OptionChoice("load", "load"), OptionChoice("unload", "unload"), OptionChoice("reload", "reload"), - ] + ] ), Option('cog', "Specify cog if need", OptionType.STRING) ] diff --git a/test2.py b/test2.py new file mode 100644 index 0000000..390c628 --- /dev/null +++ b/test2.py @@ -0,0 +1,38 @@ +import json + + +def write_json(guild: int, param_name: str, param: str or int): + with open('prefix.json', 'r+', encoding='utf-8') as _f: + try: + _jsonObject = json.load(_f) + except json.decoder.JSONDecodeError: + _jsonObject = {} + + try: + _guild_conf = _jsonObject[f"{guild}"] + except KeyError: + _guild_conf = {f"{guild}": {}} + + print(_jsonObject) + print(_jsonObject) + + try: + _param = {f"{param_name}": f"{param}"} + except KeyError: + _param = {f"{param_name}": f"{param}"} + print(_param) + + _guild_conf.update(_param) + print(_jsonObject) + _jsonObject.update(_guild_conf) + _guild_conf = _jsonObject[f"{guild}"] + print(_jsonObject) + print(_guild_conf) + print(_param) + + with open("prefix.json", "w") as _f: + json.dump(_jsonObject, _f) + _f.close() + + +write_json(929446191270330452, 'rr', '34')