Пример #1
0
        internal static RoleCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            var changes = entry.Changes;

            var colorModel       = changes.FirstOrDefault(x => x.ChangedProperty == "color");
            var mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable");
            var hoistModel       = changes.FirstOrDefault(x => x.ChangedProperty == "hoist");
            var nameModel        = changes.FirstOrDefault(x => x.ChangedProperty == "name");
            var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions");

            uint?  colorRaw       = colorModel?.NewValue?.ToObject <uint>();
            bool?  mentionable    = mentionableModel?.NewValue?.ToObject <bool>();
            bool?  hoist          = hoistModel?.NewValue?.ToObject <bool>();
            string name           = nameModel?.NewValue?.ToObject <string>();
            ulong? permissionsRaw = permissionsModel?.NewValue?.ToObject <ulong>();

            Color?           color       = null;
            GuildPermissions?permissions = null;

            if (colorRaw.HasValue)
            {
                color = new Color(colorRaw.Value);
            }
            if (permissionsRaw.HasValue)
            {
                permissions = new GuildPermissions(permissionsRaw.Value);
            }

            return(new RoleCreateAuditLogData(entry.TargetId.Value,
                                              new RoleInfo(color, mentionable, hoist, name, permissions)));
        }
Пример #2
0
        public async Task <IRole> CreateOrUpdateRoleAsync(string roleName, GuildPermissions?permissions = null,
                                                          Color color = default, bool isHoisted = false)
        {
            var   name = ScoreRoleManager.RolePrefix + roleName;
            IRole res  = Guild.Roles.FirstOrDefault(r => r.Name == name);

            if (res == null)
            {
                using (await _mutex.LockAsync())
                {
                    _cache.TryGetValue(name, out res);

                    if (res == null)
                    {
                        res = _cache[name] = await Guild.CreateRoleAsync(name, permissions, color, isHoisted, false);
                    }
                }
            }

            if (res.Color != color || res.IsHoisted != isHoisted)
            {
                await res.ModifyAsync(p =>
                {
                    p.Color = color;
                    p.Hoist = isHoisted;
                });
            }

            return(res);
        }
        internal static RoleDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            API.AuditLogChangeJson[] changes = entry.Changes;

            API.AuditLogChangeJson colorModel       = changes.FirstOrDefault(x => x.ChangedProperty == "color");
            API.AuditLogChangeJson mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable");
            API.AuditLogChangeJson hoistModel       = changes.FirstOrDefault(x => x.ChangedProperty == "hoist");
            API.AuditLogChangeJson nameModel        = changes.FirstOrDefault(x => x.ChangedProperty == "name");
            API.AuditLogChangeJson permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions");

            uint?  colorRaw       = colorModel?.OldValue?.ToObject <uint>(discord.ApiClient.Serializer);
            bool?  mentionable    = mentionableModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer);
            bool?  hoist          = hoistModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer);
            string name           = nameModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer);
            ulong? permissionsRaw = permissionsModel?.OldValue?.ToObject <ulong>(discord.ApiClient.Serializer);

            Color?           color       = null;
            GuildPermissions?permissions = null;

            if (colorRaw.HasValue)
            {
                color = new Color(colorRaw.Value);
            }
            if (permissionsRaw.HasValue)
            {
                permissions = new GuildPermissions(permissionsRaw.Value);
            }

            return(new RoleDeleteAuditLogData(entry.TargetId.Value,
                                              new RoleEditInfo(color, mentionable, hoist, name, permissions)));
        }
Пример #4
0
        public async Task <RestRole> CreateRoleAsync(string name, GuildPermissions?permissions = default(GuildPermissions?), Color?color = default(Color?),
                                                     bool isHoisted = false, RequestOptions options = null)
        {
            var role = await GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, options).ConfigureAwait(false);

            _roles = _roles.Add(role.Id, role);
            return(role);
        }
Пример #5
0
 internal RoleEditInfo(Color?color, bool?mentionable, bool?hoist, string name,
                       GuildPermissions?permissions)
 {
     Color       = color;
     Mentionable = mentionable;
     Hoist       = hoist;
     Name        = name;
     Permissions = permissions;
 }
        internal static RoleUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            API.AuditLogChangeJson[] changes = entry.Changes;

            API.AuditLogChangeJson colorModel       = changes.FirstOrDefault(x => x.ChangedProperty == "color");
            API.AuditLogChangeJson mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable");
            API.AuditLogChangeJson hoistModel       = changes.FirstOrDefault(x => x.ChangedProperty == "hoist");
            API.AuditLogChangeJson nameModel        = changes.FirstOrDefault(x => x.ChangedProperty == "name");
            API.AuditLogChangeJson permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions");

            uint?oldColorRaw        = colorModel?.OldValue?.ToObject <uint>(discord.ApiClient.Serializer),
                newColorRaw         = colorModel?.NewValue?.ToObject <uint>(discord.ApiClient.Serializer);
            bool?oldMentionable     = mentionableModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer),
                newMentionable      = mentionableModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer);
            bool?oldHoist           = hoistModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer),
                newHoist            = hoistModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer);
            string oldName          = nameModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer),
                   newName          = nameModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer);
            ulong?oldPermissionsRaw = permissionsModel?.OldValue?.ToObject <ulong>(discord.ApiClient.Serializer),
                 newPermissionsRaw  = permissionsModel?.NewValue?.ToObject <ulong>(discord.ApiClient.Serializer);

            Color?oldColor = null,
                 newColor  = null;
            GuildPermissions?oldPermissions = null,
                            newPermissions  = null;

            if (oldColorRaw.HasValue)
            {
                oldColor = new Color(oldColorRaw.Value);
            }
            if (newColorRaw.HasValue)
            {
                newColor = new Color(newColorRaw.Value);
            }
            if (oldPermissionsRaw.HasValue)
            {
                oldPermissions = new GuildPermissions(oldPermissionsRaw.Value);
            }
            if (newPermissionsRaw.HasValue)
            {
                newPermissions = new GuildPermissions(newPermissionsRaw.Value);
            }

            RoleEditInfo oldProps = new RoleEditInfo(oldColor, oldMentionable, oldHoist, oldName, oldPermissions);
            RoleEditInfo newProps = new RoleEditInfo(newColor, newMentionable, newHoist, newName, newPermissions);

            return(new RoleUpdateAuditLogData(entry.TargetId.Value, oldProps, newProps));
        }
Пример #7
0
        //Roles
        /// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception>
        public static async Task <RestRole> CreateRoleAsync(IGuild guild, BaseDiscordClient client,
                                                            string name, GuildPermissions?permissions, Color?color, bool isHoisted, bool isMentionable, RequestOptions options)
        {
            if (name == null)
            {
                throw new ArgumentNullException(paramName: nameof(name));
            }

            var createGuildRoleParams = new API.Rest.ModifyGuildRoleParams
            {
                Color       = color?.RawValue ?? Optional.Create <uint>(),
                Hoist       = isHoisted,
                Mentionable = isMentionable,
                Name        = name,
                Permissions = permissions?.RawValue.ToString() ?? Optional.Create <string>()
            };

            var model = await client.ApiClient.CreateGuildRoleAsync(guild.Id, createGuildRoleParams, options).ConfigureAwait(false);

            return(RestRole.Create(client, guild, model));
        }
Пример #8
0
        public async Task <IRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            var model = await Discord.ApiClient.CreateGuildRoleAsync(Id).ConfigureAwait(false);

            var role = new Role(this, model);

            await role.ModifyAsync(x =>
            {
                x.Name        = name;
                x.Permissions = (permissions ?? role.Permissions).RawValue;
                x.Color       = (color ?? Color.Default).RawValue;
                x.Hoist       = isHoisted;
            }).ConfigureAwait(false);

            return(role);
        }
Пример #9
0
        //Roles
        /// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception>
        public static async Task <RestRole> CreateRoleAsync(IGuild guild, BaseDiscordClient client,
                                                            string name, GuildPermissions?permissions, Color?color, bool isHoisted, RequestOptions options)
        {
            if (name == null)
            {
                throw new ArgumentNullException(paramName: nameof(name));
            }

            var model = await client.ApiClient.CreateGuildRoleAsync(guild.Id, options).ConfigureAwait(false);

            var role = RestRole.Create(client, guild, model);

            await role.ModifyAsync(x =>
            {
                x.Name        = name;
                x.Permissions = (permissions ?? role.Permissions);
                x.Color       = (color ?? Color.Default);
                x.Hoist       = isHoisted;
            }, options).ConfigureAwait(false);

            return(role);
        }
Пример #10
0
 async Task <IRole> IGuild.CreateRoleAsync(string name, GuildPermissions?permissions, Color?color, bool isHoisted, RequestOptions options)
 => await CreateRoleAsync(name, permissions, color, isHoisted, options).ConfigureAwait(false);
Пример #11
0
 public BotPermissionAttribute(Permission permissions)
 {
     GuildPermissions = permissions;
 }
Пример #12
0
 /// <inheritdoc />
 async Task <IRole> IGuild.CreateRoleAsync(string name, GuildPermissions?permissions, Color?color, bool isHoisted, RequestOptions options)
 => (await(RestGuild as IGuild).CreateRoleAsync(name, permissions, color, isHoisted, options))
 .Abstract();
Пример #13
0
 /// <inheritdoc />
 public async Task <IRestRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false, RequestOptions options = null)
 => (await RestGuild.CreateRoleAsync(name, permissions, color, isHoisted, options))
 .Abstract();
Пример #14
0
 public Task <RestRole> CreateRoleAsync(string name, GuildPermissions?permissions = default(GuildPermissions?), Color?color = default(Color?),
                                        bool isHoisted = false, RequestOptions options = null)
 => GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, options);
Пример #15
0
 public UserPermissionAttribute(Permission permissions)
 {
     GuildPermissions = permissions;
 }
 Task <IRole> IGuild.CreateRoleAsync(string name, GuildPermissions?permissions, Color?color, bool isHoisted, bool isMentionable, RequestOptions?options)
 {
     return(((IGuild)_socketGuild).CreateRoleAsync(name, permissions, color, isHoisted, isMentionable, options));
 }
 public virtual Task <RestRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false, bool isMentionable = false, RequestOptions?options = null)
 {
     return(_socketGuild.CreateRoleAsync(name, permissions, color, isHoisted, isMentionable, options));
 }
Пример #18
0
 public Task <IRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false, RequestOptions options = null)
 {
     return(((IGuild)Guild).CreateRoleAsync(name, permissions, color, isHoisted, options));
 }
Пример #19
0
 public async Task <IRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false,
                                           bool isMentionable = false, RequestOptions options            = null)
 => RestRoleAbstractionExtensions.Abstract(await SocketGuild.CreateRoleAsync(name, permissions, color, isHoisted, isMentionable, options));
Пример #20
0
 public Task <IRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false, bool isMentionable = false, RequestOptions options = null)
 {
     throw new NotImplementedException();
 }