public override ValueTask <RoleCreatedEventArgs> HandleDispatchAsync(IGatewayApiClient shard, GuildRoleCreateJsonModel model) { IRole role; if (CacheProvider.TryGetRoles(model.GuildId, out var cache)) { role = new CachedRole(Client, model.GuildId, model.Role); cache.Add(role.Id, role as CachedRole); } else { role = new TransientRole(Client, model.GuildId, model.Role); } var e = new RoleCreatedEventArgs(role); return(new(e)); }
public override ValueTask <RoleUpdatedEventArgs> HandleDispatchAsync(IGatewayApiClient shard, GuildRoleUpdateJsonModel model) { CachedRole oldRole; IRole newRole; if (CacheProvider.TryGetRoles(model.GuildId, out var cache) && cache.TryGetValue(model.Role.Id, out var role)) { newRole = role; oldRole = role.Clone() as CachedRole; newRole.Update(model.Role); } else { oldRole = null; newRole = new TransientRole(Client, model.GuildId, model.Role); } var e = new RoleUpdatedEventArgs(model.GuildId, oldRole, newRole); return(new(e)); }