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)
示例#2
0
文件: Admin.py 项目: devRMA/Androxus
 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()
示例#4
0
 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)
示例#5
0
 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()
示例#8
0
文件: Admin.py 项目: devRMA/Androxus
 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)