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))); }
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))); }
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); }
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)); }
//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)); }
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); }
//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); }
async Task <IRole> IGuild.CreateRoleAsync(string name, GuildPermissions?permissions, Color?color, bool isHoisted, RequestOptions options) => await CreateRoleAsync(name, permissions, color, isHoisted, options).ConfigureAwait(false);
public BotPermissionAttribute(Permission permissions) { GuildPermissions = permissions; }
/// <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();
/// <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();
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);
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)); }
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)); }
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));
public Task <IRole> CreateRoleAsync(string name, GuildPermissions?permissions = null, Color?color = null, bool isHoisted = false, bool isMentionable = false, RequestOptions options = null) { throw new NotImplementedException(); }