edditing code
This commit is contained in:
7
.idea/discord.xml
generated
Normal file
7
.idea/discord.xml
generated
Normal 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
25
.idea/jsonSchemas.xml
generated
Normal 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
64
cogs/admin.py
Normal 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
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import random
|
||||||
import tempfile
|
import tempfile
|
||||||
from os import path, makedirs, rename, remove
|
from os import path, makedirs, rename, remove
|
||||||
|
|
||||||
@@ -23,16 +24,6 @@ class Audio(commands.Cog):
|
|||||||
# Read audio from DB
|
# Read audio from DB
|
||||||
audio_db = await read_db(member.guild.id, member.id, 'usertracks')
|
audio_db = await read_db(member.guild.id, member.id, 'usertracks')
|
||||||
def_audio_db = await read_db(member.guild.id, member.id, 'defaulttracks')
|
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:
|
if audio_db is not None:
|
||||||
audio_db = audio_db.split(', ') # Need to fix creating list
|
audio_db = audio_db.split(', ') # Need to fix creating list
|
||||||
for i in range(len(audio_db)):
|
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 or audio_db is not None:
|
||||||
if def_audio_db is None: def_audio_db = []
|
if def_audio_db is None: def_audio_db = []
|
||||||
if audio_db is None: audio_db = []
|
if audio_db is None: audio_db = []
|
||||||
print(audio_db, def_audio_db)
|
|
||||||
logging.info(f'Play audio from DB')
|
logging.info(f'Play audio from DB')
|
||||||
full_audio = def_audio_db + audio_db
|
full_audio = def_audio_db + audio_db
|
||||||
|
audio = random.choice(full_audio)
|
||||||
if not self.bot.voice_clients:
|
await play_audio(audio, self.bot, after.channel)
|
||||||
await play_audio(full_audio, self.bot, after.channel)
|
elif len(member.roles) == 1 or _role is None:
|
||||||
elif (role.id in _role for role in member.roles):
|
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')
|
logging.info(f'Play audio from list by role')
|
||||||
if not self.bot.voice_clients:
|
audio = random.choice(def_audio_ls)
|
||||||
await play_audio(def_audio_ls, self.bot, after.channel)
|
await play_audio(audio, self.bot, after.channel)
|
||||||
else:
|
else:
|
||||||
logging.info(f'Skip playing')
|
logging.info(f'Skip playing')
|
||||||
|
|
||||||
|
|||||||
16
cogs/fun.py
Normal file
16
cogs/fun.py
Normal 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
|
||||||
@@ -4,8 +4,8 @@ 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.Comands import read_json, write_json
|
from lib.Comands import write_json
|
||||||
from lib.DB import fill_bd, prepare_db, work_with_db, read_db
|
from lib.DB import work_with_db, read_db
|
||||||
|
|
||||||
|
|
||||||
class General(commands.Cog):
|
class General(commands.Cog):
|
||||||
@@ -14,33 +14,8 @@ class General(commands.Cog):
|
|||||||
|
|
||||||
@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):
|
||||||
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!.')
|
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()
|
@commands.Cog.listener()
|
||||||
async def on_member_update(self, before: disnake.Member, after: disnake.Member):
|
async def on_member_update(self, before: disnake.Member, after: disnake.Member):
|
||||||
sql_update_query = f"""UPDATE "{after.guild.id}" set nick = ? where userid = ?"""
|
sql_update_query = f"""UPDATE "{after.guild.id}" set nick = ? where userid = ?"""
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ async def list_files(fold: str = 'audio'):
|
|||||||
return fl[2]
|
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
|
Reads Json file to determite config strings
|
||||||
:param guild: ID of Guild
|
:param guild: ID of Guild
|
||||||
@@ -25,6 +25,7 @@ async def read_json(guild: int, _param: str) -> int or str:
|
|||||||
:return: value of parameter
|
:return: value of parameter
|
||||||
"""
|
"""
|
||||||
with open('prefix.json', 'r', encoding='utf-8') as fp: # Open the JSON
|
with open('prefix.json', 'r', encoding='utf-8') as fp: # Open the JSON
|
||||||
|
parameter = None
|
||||||
try:
|
try:
|
||||||
_json = json.load(fp) # Load the custom prefixes
|
_json = json.load(fp) # Load the custom prefixes
|
||||||
except TypeError:
|
except TypeError:
|
||||||
@@ -35,10 +36,9 @@ async def read_json(guild: int, _param: str) -> int or str:
|
|||||||
try:
|
try:
|
||||||
parameter = guild_conf[f"{_param}"]
|
parameter = guild_conf[f"{_param}"]
|
||||||
except:
|
except:
|
||||||
parameter = None
|
pass
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return parameter
|
return parameter
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import logging
|
import logging
|
||||||
import random
|
|
||||||
from asyncio import sleep
|
from asyncio import sleep
|
||||||
|
|
||||||
from disnake import FFmpegPCMAudio
|
from disnake import FFmpegPCMAudio
|
||||||
|
|
||||||
|
|
||||||
async def play_audio(full_audio, bot, vc):
|
async def play_audio(audio, bot, vc):
|
||||||
if not bot.voice_clients:
|
if not bot.voice_clients:
|
||||||
audio = random.choice(full_audio)
|
logging.info(audio)
|
||||||
logging.error(f'Playing: {audio}')
|
logging.error(f'Playing: {audio}')
|
||||||
await sleep(1)
|
await sleep(1)
|
||||||
vp = await vc.connect()
|
vp = await vc.connect()
|
||||||
|
|||||||
9
test.py
9
test.py
@@ -13,16 +13,19 @@ if not path.isfile('prefix.json'):
|
|||||||
with open('prefix.json', 'w+', encoding='utf-8') as f:
|
with open('prefix.json', 'w+', encoding='utf-8') as f:
|
||||||
f.write("")
|
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,
|
bot = commands.Bot(command_prefix=determine_prefix,
|
||||||
intents=intents,
|
intents=intents,
|
||||||
status=disnake.Status.idle,
|
|
||||||
reload=True,
|
reload=True,
|
||||||
test_guilds=[929446191270330410, 987120286933602354])
|
test_guilds=[929446191270330410, 987120286933602354])
|
||||||
|
|
||||||
logging.basicConfig(stream=sys.stdout, filemode='w', level='INFO',
|
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():
|
for filename in cog_list():
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user