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
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