most commands moved into cogs
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import logging
|
||||
import lib
|
||||
|
||||
from os import path, makedirs, rename, remove
|
||||
from discord.ext import commands
|
||||
|
||||
|
||||
@@ -11,6 +13,51 @@ class Audio(commands.Cog):
|
||||
async def on_ready(self):
|
||||
logging.info(f'Cog {__name__.split(".")[1]} is ready!.')
|
||||
|
||||
@commands.command(name="upload_audio")
|
||||
async def upload_audio(self, ctx, user=None):
|
||||
user = user or ctx.author
|
||||
if ctx.author.guild_permissions.administrator or user is ctx.author:
|
||||
if ctx.message.attachments:
|
||||
from os import error
|
||||
if not path.isdir(f'tmp/{user.id}'):
|
||||
try:
|
||||
makedirs(f'tmp/{user.id}')
|
||||
except error as _error:
|
||||
logging.info(f"Failed to create dir", _error)
|
||||
if not path.isdir(f'audio/{user.id}'):
|
||||
try:
|
||||
makedirs(f'audio/{user.id}')
|
||||
except error as _error:
|
||||
logging.info(f"Failed to create dir", _error)
|
||||
for at in ctx.message.attachments:
|
||||
import mimetypes
|
||||
|
||||
await at.save(f'tmp/{user.id}/{at.filename}')
|
||||
guess = mimetypes.guess_type(f'tmp/{user.id}/{at.filename}')
|
||||
if guess[0]:
|
||||
from pymediainfo import MediaInfo
|
||||
file = f'tmp/{user.id}/{at.filename}'
|
||||
duration = round(MediaInfo.parse(file).tracks[0].duration / 1000)
|
||||
if duration > 15:
|
||||
await ctx.reply(f'Audio duration is {duration}, but max is 15')
|
||||
remove(f'tmp/{user.id}/{at.filename}')
|
||||
else:
|
||||
a = lib.DB.read_db(ctx.guild.id, user.id)
|
||||
if a is None:
|
||||
audiolist = f'{user.id}/{at.filename}'
|
||||
else:
|
||||
audiolist = lib.DB.read_db(ctx.guild.id, user.id) + ", " + f'{user.id}/{at.filename}'
|
||||
|
||||
lib.DB.add_audio(ctx.guild.id, user.id, audiolist)
|
||||
rename(f'tmp/{user.id}/{at.filename}', f'audio/{user.id}/{at.filename}')
|
||||
else:
|
||||
await ctx.reply(f'Failed to find MIME type of {at.filename}', ephemeral=True)
|
||||
remove(f'tmp/{user.id}/{at.filename}')
|
||||
else:
|
||||
await ctx.reply("Has no Attachment", ephemeral=True)
|
||||
else:
|
||||
await ctx.reply(f'You`re not admin. You can add audio only for your own account', ephemeral=True)
|
||||
|
||||
|
||||
def setup(bot): # an extension must have a setup function
|
||||
bot.add_cog(Audio(bot)) # adding a cog
|
||||
|
||||
@@ -22,6 +22,32 @@ class General(commands.Cog):
|
||||
|
||||
logging.info(f'Cog {__name__.split(".")[1]} is ready!.')
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_join(self, guild):
|
||||
for g in guild.members:
|
||||
lib.DB.fill_bd(g.name, g.id, g.bot, g.nick, guild.id)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_join(self, member):
|
||||
lib.DB.fill_bd(member.name, member.id, member.bot, member.nick, member.guild.id)
|
||||
|
||||
bot_role = lib.Commands.read_json(member.guild.id, 'bot_role') # Get bot role
|
||||
guest_role = lib.Commands.read_json(member.guild.id, 'guest_role') # Get guest role
|
||||
|
||||
if bot_role and guest_role:
|
||||
if member.bot == 0:
|
||||
role = discord.utils.get(member.guild.roles, id=guest_role)
|
||||
else:
|
||||
role = discord.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: discord.Member, after: discord.Member):
|
||||
sql_update_query = f"""UPDATE "{after.guild.id}" set nick = ? where userid = ?"""
|
||||
data_tuple = (after.nick, before.id)
|
||||
lib.DB.work_with_db(sql_update_query, data_tuple)
|
||||
|
||||
@slash_command(
|
||||
name="info",
|
||||
description="Read list of tracks for user",
|
||||
|
||||
@@ -21,7 +21,6 @@ class Bot_info(commands.Cog):
|
||||
description=f"General information on about bot",
|
||||
)
|
||||
emb.add_field(name="Bot ping", value=f'Bot ping: {round(self.bot.latency * 1000)}', inline=True)
|
||||
# emb.add_field(name="Roles list", value=f"{roles}", inline=True)
|
||||
emb.set_footer(text="Information requested by: {}".format(ctx.author.display_name))
|
||||
|
||||
await ctx.reply(embed=emb, ephemeral=True)
|
||||
|
||||
Reference in New Issue
Block a user