Example #1
0
 async def execute(self, message: discord.Message, args: list,
                   keys: DotDict) -> CommandResult:
     module_manager = ModuleManager()
     embed = self.bot.get_special_embed(
         title="Список%s команд" %
         (" доступных" if "all" not in keys else ""),
         description="Ваши права discord: %s\nВаши права future: %s" %
         (hex(message.author.guild_permissions.value),
          bin(module_manager.get_sp_permissions(message.author.id))),
         color=0xb63a6b)
     for command in module_manager.commands.values():
         if "all" in keys or module_manager.check_permissions(message.author.guild_permissions, command.permissions) \
                 and module_manager.check_sp_permissions(message.author.id, command.future_permissions):
             embed.add_field(name="%s%s %s" %
                             (cmd_prefix, command.name, command.arguments),
                             value=command.description,
                             inline=False)
     await message.channel.send(embed=embed)
     return CommandResult.success
Example #2
0
 async def execute(self, message: discord.Message, args: list,
                   keys: DotDict) -> CommandResult:
     if len(args) < 2:
         return CommandResult.arguments_insufficient
     if args[0] == "add":
         perm = args[1]
         try:
             perm = FuturePermission[perm.upper()]
         except KeyError:
             raise CommandException("Permission \"%s\" don't exists." %
                                    perm.upper())
         embed = self.bot.get_ok_embed(title="Установка прав")
         success = 0
         failure = 0
         for mention in message.mentions:
             perms = ModuleManager().get_sp_permissions(mention.id)
             if perms & perm.value == perm.value:
                 embed.add_field(
                     name=
                     "Установка разрешения %s пользователю %s не удалась." %
                     (perm, str(mention)),
                     value="Он уже имеет такое разрешение")
                 failure += 1
             else:
                 try:
                     db_perms: SPPermissions = SPPermissions.objects.get(
                         user_id=mention.id)
                 except SPPermissions.DoesNotExist:
                     db_perms: SPPermissions = SPPermissions()
                     db_perms.user_id = mention.id
                 db_perms.permissions |= perm.value
                 db_perms.save()
                 embed.add_field(name="%s - успешно" % str(mention),
                                 value="Текущие права: %s" %
                                 bin(db_perms.permissions))
                 success += 1
         embed.description = "%s успешно\n%s с ошибками" % (success,
                                                            failure)
         await message.channel.send(embed=embed)
     elif args[0] == "remove":
         perm = args[1]
         try:
             perm = FuturePermission[perm.upper()]
         except KeyError:
             raise CommandException("Permission \"%s\" don't exists." %
                                    perm.upper())
         embed = self.bot.get_ok_embed(title="Удаление прав")
         success = 0
         failure = 0
         for mention in message.mentions:
             perms = ModuleManager().get_sp_permissions(mention.id)
             if perms & perm.value != perm.value:
                 embed.add_field(
                     name=
                     "Удаление разрешения %s у пользователя %s невозможно."
                     % (perm, str(mention)),
                     value="Он не имеет такого разрешения.")
                 failure += 1
             else:
                 try:
                     db_perms: SPPermissions = SPPermissions.objects.get(
                         user_id=mention.id)
                 except SPPermissions.DoesNotExist:
                     db_perms: SPPermissions = SPPermissions()
                     db_perms.user_id = mention.id
                 db_perms.permissions ^= perm.value
                 db_perms.save()
                 embed.add_field(name="%s - успешно" % str(mention),
                                 value="Текущие права: %s" %
                                 bin(db_perms.permissions))
                 success += 1
         embed.description = "%s успешно\n%s с ошибками" % (success,
                                                            failure)
         await message.channel.send(embed=embed)
     else:
         return CommandResult.arguments_insufficient
     return CommandResult.success