async def _remover_comando(self, ctx, *, comando: str = None): if comando is None: return await self.bot.send_help(ctx) servidor = await ServidorRepository().get_servidor( self.bot.db_connection, ctx.guild.id) # vai verificar se o comando está no banco # aliás, pra remover o comando, ele precisa existir no banco comando_personalizado = ComandoPersonalizado(servidor, comando.lower(), '', False) if comando_personalizado not in [ cmd for cmd in await ComandoPersonalizadoRepository().get_commands( self.bot.db_connection, servidor) ]: return await ctx.reply( f'{self.bot.emoji("atencao")} Este comando não existe!') await ComandoPersonalizadoRepository().delete(self.bot.db_connection, comando_personalizado) embed = discord.Embed(title=f'Comando removido com sucesso!', colour=discord.Colour.random(), description=f'Comando: {comando}', timestamp=datetime.utcnow()) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) return await ctx.reply(content=get_emoji_dance(), embed=embed, mention_author=False)
async def _unban(self, ctx, member: BannedMember = None, *args): if member is None: return await self.bot.send_help(ctx) reason = None if args: reason = ' '.join(args) embed = discord.Embed( title=f'Ban revogado!', colour=discord.Colour.random(), description= f'Usuário: {member.user}\nId: {member.user.id}\nMotivo: ' + f'{str(reason).replace("None", "nulo")}', timestamp=datetime.utcnow()) if member.reason: embed.add_field(name='Antigo ban:', value=f'{member.reason}', inline=False) embed.set_footer(text=str(ctx.author), icon_url=ctx.author.avatar_url) reason = f'Ban revogado por: {ctx.author} —— Motivo: {str(reason).replace("None", "nulo")}' try: await ctx.guild.unban(member.user, reason=reason) except discord.Forbidden: await ctx.reply('Não tenho permissão para revogar banimentos!') except discord.HTTPException: await ctx.reply( 'Desculpe, mas ocorreu um erro na hora de executar o comando, tente novamente mais tarde.', mention_author=False) else: await ctx.reply(content=get_emoji_dance(), embed=embed, mention_author=False)
async def _remover_comando(self, ctx, *, comando: str = None): if comando is None: return await self.bot.send_help(ctx) conexao = Conexao() servidor = ServidorRepository().get_servidor(conexao, ctx.guild.id) # vai verificar se o comando está no banco # aliás, pra remover o comando, ele precisa existir no banco comando_personalizado = ComandoPersonalizado(servidor, comando.lower(), '', False) if comando_personalizado not in [ cmd for cmd in ComandoPersonalizadoRepository().get_commands( conexao, servidor) ]: conexao.fechar() return await ctx.send( '<a:atencao:755844029333110815> Este comando não existe!') try: ComandoPersonalizadoRepository().delete(conexao, comando_personalizado) embed = discord.Embed(title=f'Comando removido com sucesso!', colour=discord.Colour(random_color()), description=f'Comando: {comando}', timestamp=datetime.utcnow()) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) return await ctx.send(content=get_emoji_dance(), embed=embed) except Exception as e: raise e finally: conexao.fechar()
async def _game(self, ctx, *, name=None): if name is None: self.bot.mudar_status = True embed = discord.Embed( title=f'Agora meus status vão ficar alterado!', colour=discord.Colour.random(), description=get_emoji_dance(), timestamp=datetime.utcnow()) embed.set_author(name=self.bot.user.name, icon_url=self.bot.user.avatar_url) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) else: self.bot.mudar_status = False await self.bot.change_presence(activity=discord.Game(name=name)) embed = discord.Embed( title=f'Status alterado!', colour=discord.Colour.random(), description=f'Agora eu estou jogando ``{name}``', timestamp=datetime.utcnow()) embed.set_author(name=self.bot.user.name, icon_url=self.bot.user.avatar_url) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) await ctx.reply(embed=embed, mention_author=False)
async def _game(self, ctx, *args): if (len(args) == 1) and (args[0] == '-1'): # se só tiver um item, e for -1 self.bot.mudar_status = True embed = discord.Embed( title=f'Agora meus status vão ficar alterado!', colour=discord.Colour(random_color()), description=get_emoji_dance(), timestamp=datetime.utcnow()) embed.set_author(name='Androxus', icon_url=self.bot.user.avatar_url) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) else: self.bot.mudar_status = False await self.bot.change_presence(activity=discord.Game( name=' '.join(args))) embed = discord.Embed( title=f'Status alterado!', colour=discord.Colour(random_color()), description=f'Agora eu estou jogando ``{" ".join(args)}``', timestamp=datetime.utcnow()) embed.set_author(name='Androxus', icon_url=self.bot.user.avatar_url) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) await ctx.send(embed=embed)
async def _modificar_comando(self, ctx, comando='', resposta='', in_text='t'): in_text = convert_to_bool(in_text) if in_text is None: await ctx.send( f'Valor ``{in_text}`` inválido! Os valores que eu aceito são: sim, não, yes, no, 0, 1' ) return if ctx.message.content.count('"') != 4: return await ctx.send( 'Parece que você digitou o comando errado!\nVocê deve usar o comando assim:\n' + f'{ctx.prefix}modificar_comando **"**comando**"** **"**resposta**"**' ) if (comando.replace(' ', '') == '') or (resposta.replace(' ', '') == ''): return await self.bot.send_help(ctx) conexao = Conexao() servidor = ServidorRepository().get_servidor(conexao, ctx.guild.id) comando_personalizado = ComandoPersonalizado(servidor, comando.lower(), resposta, in_text) # vai verificar se o comando está no banco # aliás, pra modificar o comando, ele precisa existir no banco if comando_personalizado not in [ cmd for cmd in ComandoPersonalizadoRepository().get_commands( conexao, servidor) ]: conexao.fechar() return await ctx.send( '<a:atencao:755844029333110815> Este comando não existe!') try: ComandoPersonalizadoRepository().update(conexao, comando_personalizado) in_text_str = capitalize(convert_to_string(in_text)) embed = discord.Embed( title=f'Comando modificado com sucesso!', colour=discord.Colour(random_color()), description=f'Comando: {comando}\nResposta: {resposta}\n' f'Ignorar a posição do comando: {in_text_str}', timestamp=datetime.utcnow()) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) await ctx.send(content=get_emoji_dance(), embed=embed) except Exception as e: raise e finally: conexao.fechar()
async def _adicionar_comando(self, ctx, comando='', resposta='', in_text='t'): in_text = convert_to_bool(in_text) if in_text is None: return await ctx.send( f'Valor ``{in_text}`` inválido! Os valores que eu aceito são: sim, não, yes, no, 0, 1' ) if ctx.message.content.count('"') < 4: return await ctx.send( 'Parece que você digitou o comando errado!\nVocê deve usar o comando assim:\n' + f'{ctx.prefix}adicionar_comando **"**comando**"** **"**resposta**"**' ) if (comando.replace(' ', '') == '') or (resposta.replace(' ', '') == ''): return await self.bot.send_help(ctx) conexao = Conexao() servidor = ServidorRepository().get_servidor(conexao, ctx.guild.id) comando_personalizado = ComandoPersonalizado(servidor, comando.lower(), resposta, in_text) try: ComandoPersonalizadoRepository().create(conexao, comando_personalizado) in_text_str = capitalize(convert_to_string(in_text)) embed = discord.Embed(title=f'Comando adicionado com sucesso!', colour=discord.Colour(random_color()), description='** **', timestamp=datetime.utcnow()) embed.set_footer(text=f'{ctx.author}', icon_url=ctx.author.avatar_url) embed.add_field( name= f'Comando: {comando.lower()}\nResposta: {resposta}\nIgnorar a posição do comando: {in_text_str}', value=f'** **', inline=False) await ctx.send(content=get_emoji_dance(), embed=embed) except Exception as e: raise e finally: conexao.fechar()
async def _kick(self, ctx, member: discord.Member = None, *args): if isinstance(args, tuple): # se chegar como tupla, vai transformar em lista args = list(args) # se a pessoa passou pelo menos o membro, ou algum argumento if args or member: if not member: # se o membro não foi marcado # vai ver se a pessoa passou um id try: # vai tentar converter para int, o primeiro valor que a pessoa passou id = int(args[0]) except ValueError: # se não conseguir: return await self.bot.send_help(ctx) else: # se não entrou no except args.pop(0) # vai tentar achar o membro com esse id member = ctx.guild.get_member(id) if not member: # se não achou o membro: return await ctx.reply( f'Não consegui encontrar o membro com id `{id}`!') # vai verificar se a pessoa pode usar o comando if ctx.guild.owner == member: return await ctx.reply( f'Você não pode expulsar o dono do servidor! ' f'{self.bot.get_emoji("ah_nao")}') elif member == ctx.author: return await ctx.reply(f'Você não pode se expulsar! ' f'{self.bot.get_emoji("ah_nao")}') elif member == self.bot.user: return await ctx.reply(f'Eu não posso me expulsar! ' f'{self.bot.get_emoji("ah_nao")}') elif ctx.author.id in self.bot.configs[ 'owners'] or ctx.author == ctx.guild.owner: pass # se for o dono do bot, ou dono do servidor, vai ignorar as próxima verificação elif ctx.author.top_role <= member.top_role: return await ctx.reply( f'Você só pode expulsar pessoas que tenham cargo mais ' 'baixo que o seu!') # se sobrou algum argumento, é porque a pessoa passou um motivo reason = None if args: reason = ' '.join(args) else: # se a pessoa não passou nada: return await self.bot.send_help(ctx) embed = discord.Embed( title=f'Usuário expulso!', colour=discord.Colour.random(), description=f'Usuário: {member}\nId: {member.id}\nMotivo: ' + f'{str(reason).replace("None", "nulo")}', timestamp=datetime.utcnow()) embed.set_footer(text=str(ctx.author), icon_url=ctx.author.avatar_url) msg_kick = f'{member.mention} Você foi expulso do servidor {ctx.guild}!' if reason: msg_kick += f'\nPelo motivo: {reason}' try: if not member.bot: msg = await member.send(msg_kick) except: pass reason = f'Expulso por: {ctx.author} —— Motivo: {str(reason).replace("None", "nulo")}' try: await ctx.guild.kick(member, reason=reason) except discord.errors.Forbidden: await msg.delete() await ctx.reply( f'Eu não tenho permissão para expulsar esse usuário. {self.bot.get_emoji("sad")}', mention_author=False) else: await ctx.reply(content=get_emoji_dance(), embed=embed, mention_author=False)