edditing code

This commit is contained in:
2022-08-23 20:44:19 +03:00
parent 10990a86a4
commit 8ac74ccd44
9 changed files with 133 additions and 53 deletions

7
.idea/discord.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

25
.idea/jsonSchemas.xml generated Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JsonSchemaMappingsProjectConfiguration">
<state>
<map>
<entry key="JSON Schema version 4">
<value>
<SchemaInfo>
<option name="name" value="JSON Schema version 4" />
<option name="relativePathToSchema" value="http://json-schema.org/draft-04/schema" />
<option name="applicationDefined" value="true" />
<option name="patterns">
<list>
<Item>
<option name="path" value="prefix.json" />
</Item>
</list>
</option>
</SchemaInfo>
</value>
</entry>
</map>
</state>
</component>
</project>

64
cogs/admin.py Normal file
View File

@@ -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

View File

@@ -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')

16
cogs/fun.py Normal file
View File

@@ -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

View File

@@ -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 = ?"""

View File

@@ -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

View File

@@ -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()

View File

@@ -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: