Update REST models on modify
This commit is contained in:
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
internal static class DateTimeUtils
|
internal static class DateTimeUtils
|
||||||
{
|
{
|
||||||
public static DateTimeOffset FromSnowflake(ulong value)
|
public static DateTimeOffset FromSnowflake(ulong value)
|
||||||
=> DateTimeOffset.FromUnixTimeMilliseconds((long)((value >> 22) + 1420070400000UL));
|
=> DateTimeOffset.FromUnixTimeMilliseconds((long)((value >> 22) + 1420070400000UL));
|
||||||
|
|
||||||
public static DateTimeOffset FromTicks(long ticks)
|
public static DateTimeOffset FromTicks(long ticks)
|
||||||
=> new DateTimeOffset(ticks, TimeSpan.Zero);
|
=> new DateTimeOffset(ticks, TimeSpan.Zero);
|
||||||
public static DateTimeOffset? FromTicks(long? ticks)
|
public static DateTimeOffset? FromTicks(long? ticks)
|
||||||
=> ticks != null ? new DateTimeOffset(ticks.Value, TimeSpan.Zero) : (DateTimeOffset?)null;
|
=> ticks != null ? new DateTimeOffset(ticks.Value, TimeSpan.Zero) : (DateTimeOffset?)null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,29 +17,29 @@ namespace Discord.Rest
|
|||||||
{
|
{
|
||||||
await client.ApiClient.DeleteChannelAsync(channel.Id, options).ConfigureAwait(false);
|
await client.ApiClient.DeleteChannelAsync(channel.Id, options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
public static async Task ModifyAsync(IGuildChannel channel, BaseDiscordClient client,
|
public static async Task<Model> ModifyAsync(IGuildChannel channel, BaseDiscordClient client,
|
||||||
Action<ModifyGuildChannelParams> func,
|
Action<ModifyGuildChannelParams> func,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyGuildChannelParams();
|
var args = new ModifyGuildChannelParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifyGuildChannelAsync(channel.Id, args, options);
|
return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, args, options);
|
||||||
}
|
}
|
||||||
public static async Task ModifyAsync(ITextChannel channel, BaseDiscordClient client,
|
public static async Task<Model> ModifyAsync(ITextChannel channel, BaseDiscordClient client,
|
||||||
Action<ModifyTextChannelParams> func,
|
Action<ModifyTextChannelParams> func,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyTextChannelParams();
|
var args = new ModifyTextChannelParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifyGuildChannelAsync(channel.Id, args, options);
|
return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, args, options);
|
||||||
}
|
}
|
||||||
public static async Task ModifyAsync(IVoiceChannel channel, BaseDiscordClient client,
|
public static async Task<Model> ModifyAsync(IVoiceChannel channel, BaseDiscordClient client,
|
||||||
Action<ModifyVoiceChannelParams> func,
|
Action<ModifyVoiceChannelParams> func,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyVoiceChannelParams();
|
var args = new ModifyVoiceChannelParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifyGuildChannelAsync(channel.Id, args, options);
|
return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, args, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Invites
|
//Invites
|
||||||
|
|||||||
@@ -54,8 +54,11 @@ namespace Discord.Rest
|
|||||||
var model = await Discord.ApiClient.GetChannelAsync(GuildId, Id, options);
|
var model = await Discord.ApiClient.GetChannelAsync(GuildId, Id, options);
|
||||||
Update(model);
|
Update(model);
|
||||||
}
|
}
|
||||||
public Task ModifyAsync(Action<ModifyGuildChannelParams> func, RequestOptions options = null)
|
public async Task ModifyAsync(Action<ModifyGuildChannelParams> func, RequestOptions options = null)
|
||||||
=> ChannelHelper.ModifyAsync(this, Discord, func, options);
|
{
|
||||||
|
var model = await ChannelHelper.ModifyAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
|
}
|
||||||
public Task DeleteAsync(RequestOptions options = null)
|
public Task DeleteAsync(RequestOptions options = null)
|
||||||
=> ChannelHelper.DeleteAsync(this, Discord, options);
|
=> ChannelHelper.DeleteAsync(this, Discord, options);
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,11 @@ namespace Discord.Rest
|
|||||||
Topic = model.Topic.Value;
|
Topic = model.Topic.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task ModifyAsync(Action<ModifyTextChannelParams> func, RequestOptions options = null)
|
||||||
public Task ModifyAsync(Action<ModifyTextChannelParams> func, RequestOptions options = null)
|
{
|
||||||
=> ChannelHelper.ModifyAsync(this, Discord, func, options);
|
var model = await ChannelHelper.ModifyAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
|
}
|
||||||
|
|
||||||
public Task<RestGuildUser> GetUserAsync(ulong id, RequestOptions options = null)
|
public Task<RestGuildUser> GetUserAsync(ulong id, RequestOptions options = null)
|
||||||
=> ChannelHelper.GetUserAsync(this, Guild, Discord, id, options);
|
=> ChannelHelper.GetUserAsync(this, Guild, Discord, id, options);
|
||||||
|
|||||||
@@ -33,8 +33,11 @@ namespace Discord.Rest
|
|||||||
UserLimit = model.UserLimit.Value;
|
UserLimit = model.UserLimit.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ModifyAsync(Action<ModifyVoiceChannelParams> func, RequestOptions options = null)
|
public async Task ModifyAsync(Action<ModifyVoiceChannelParams> func, RequestOptions options = null)
|
||||||
=> ChannelHelper.ModifyAsync(this, Discord, func, options);
|
{
|
||||||
|
var model = await ChannelHelper.ModifyAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
|
}
|
||||||
|
|
||||||
private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
|
private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ using System.Collections.Immutable;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Model = Discord.API.Guild;
|
using Model = Discord.API.Guild;
|
||||||
|
using EmbedModel = Discord.API.GuildEmbed;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Discord.Rest
|
namespace Discord.Rest
|
||||||
{
|
{
|
||||||
@@ -90,6 +92,11 @@ namespace Discord.Rest
|
|||||||
|
|
||||||
Available = true;
|
Available = true;
|
||||||
}
|
}
|
||||||
|
internal void Update(EmbedModel model)
|
||||||
|
{
|
||||||
|
EmbedChannelId = model.ChannelId;
|
||||||
|
IsEmbeddable = model.Enabled;
|
||||||
|
}
|
||||||
|
|
||||||
//General
|
//General
|
||||||
public async Task UpdateAsync(RequestOptions options = null)
|
public async Task UpdateAsync(RequestOptions options = null)
|
||||||
@@ -97,14 +104,31 @@ namespace Discord.Rest
|
|||||||
public Task DeleteAsync(RequestOptions options = null)
|
public Task DeleteAsync(RequestOptions options = null)
|
||||||
=> GuildHelper.DeleteAsync(this, Discord, options);
|
=> GuildHelper.DeleteAsync(this, Discord, options);
|
||||||
|
|
||||||
public Task ModifyAsync(Action<ModifyGuildParams> func, RequestOptions options = null)
|
public async Task ModifyAsync(Action<ModifyGuildParams> func, RequestOptions options = null)
|
||||||
=> GuildHelper.ModifyAsync(this, Discord, func, options);
|
{
|
||||||
public Task ModifyEmbedAsync(Action<ModifyGuildEmbedParams> func, RequestOptions options = null)
|
var model = await GuildHelper.ModifyAsync(this, Discord, func, options);
|
||||||
=> GuildHelper.ModifyEmbedAsync(this, Discord, func, options);
|
Update(model);
|
||||||
public Task ModifyChannelsAsync(IEnumerable<ModifyGuildChannelsParams> args, RequestOptions options = null)
|
}
|
||||||
=> GuildHelper.ModifyChannelsAsync(this, Discord, args, options);
|
public async Task ModifyEmbedAsync(Action<ModifyGuildEmbedParams> func, RequestOptions options = null)
|
||||||
public Task ModifyRolesAsync(IEnumerable<ModifyGuildRolesParams> args, RequestOptions options = null)
|
{
|
||||||
=> GuildHelper.ModifyRolesAsync(this, Discord, args, options);
|
var model = await GuildHelper.ModifyEmbedAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
|
}
|
||||||
|
public async Task ModifyChannelsAsync(IEnumerable<ModifyGuildChannelsParams> args, RequestOptions options = null)
|
||||||
|
{
|
||||||
|
var arr = args.ToArray();
|
||||||
|
await GuildHelper.ModifyChannelsAsync(this, Discord, arr, options);
|
||||||
|
}
|
||||||
|
public async Task ModifyRolesAsync(IEnumerable<ModifyGuildRolesParams> args, RequestOptions options = null)
|
||||||
|
{
|
||||||
|
var models = await GuildHelper.ModifyRolesAsync(this, Discord, args, options);
|
||||||
|
foreach (var model in models)
|
||||||
|
{
|
||||||
|
var role = GetRole(model.Id);
|
||||||
|
if (role != null)
|
||||||
|
role.Update(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Task LeaveAsync(RequestOptions options = null)
|
public Task LeaveAsync(RequestOptions options = null)
|
||||||
=> GuildHelper.LeaveAsync(this, Discord, options);
|
=> GuildHelper.LeaveAsync(this, Discord, options);
|
||||||
|
|||||||
@@ -3,19 +3,19 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Model = Discord.API.Message;
|
||||||
|
|
||||||
namespace Discord.Rest
|
namespace Discord.Rest
|
||||||
{
|
{
|
||||||
internal static class MessageHelper
|
internal static class MessageHelper
|
||||||
{
|
{
|
||||||
public static async Task ModifyAsync(IMessage msg, BaseDiscordClient client, Action<ModifyMessageParams> func,
|
public static async Task<Model> ModifyAsync(IMessage msg, BaseDiscordClient client, Action<ModifyMessageParams> func,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyMessageParams();
|
var args = new ModifyMessageParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifyMessageAsync(msg.Channel.Id, msg.Id, args, options);
|
return await client.ApiClient.ModifyMessageAsync(msg.Channel.Id, msg.Id, args, options);
|
||||||
}
|
}
|
||||||
public static async Task DeleteAsync(IMessage msg, BaseDiscordClient client,
|
public static async Task DeleteAsync(IMessage msg, BaseDiscordClient client,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
|
|||||||
@@ -111,8 +111,11 @@ namespace Discord.Rest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ModifyAsync(Action<ModifyMessageParams> func, RequestOptions options)
|
public async Task ModifyAsync(Action<ModifyMessageParams> func, RequestOptions options)
|
||||||
=> MessageHelper.ModifyAsync(this, Discord, func, options);
|
{
|
||||||
|
var model = await MessageHelper.ModifyAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
|
}
|
||||||
public Task DeleteAsync(RequestOptions options)
|
public Task DeleteAsync(RequestOptions options)
|
||||||
=> MessageHelper.DeleteAsync(this, Discord, options);
|
=> MessageHelper.DeleteAsync(this, Discord, options);
|
||||||
|
|
||||||
|
|||||||
@@ -40,8 +40,11 @@ namespace Discord.Rest
|
|||||||
Permissions = new GuildPermissions(model.Permissions);
|
Permissions = new GuildPermissions(model.Permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ModifyAsync(Action<ModifyGuildRoleParams> func, RequestOptions options = null)
|
public async Task ModifyAsync(Action<ModifyGuildRoleParams> func, RequestOptions options = null)
|
||||||
=> RoleHelper.ModifyAsync(this, Discord, func, options);
|
{
|
||||||
|
var model = await RoleHelper.ModifyAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
|
}
|
||||||
public Task DeleteAsync(RequestOptions options = null)
|
public Task DeleteAsync(RequestOptions options = null)
|
||||||
=> RoleHelper.DeleteAsync(this, Discord, options);
|
=> RoleHelper.DeleteAsync(this, Discord, options);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Discord.API.Rest;
|
using Discord.API.Rest;
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Model = Discord.API.Role;
|
||||||
|
|
||||||
namespace Discord.Rest
|
namespace Discord.Rest
|
||||||
{
|
{
|
||||||
@@ -12,12 +13,12 @@ namespace Discord.Rest
|
|||||||
{
|
{
|
||||||
await client.ApiClient.DeleteGuildRoleAsync(role.Guild.Id, role.Id, options).ConfigureAwait(false);
|
await client.ApiClient.DeleteGuildRoleAsync(role.Guild.Id, role.Id, options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
public static async Task ModifyAsync(IRole role, BaseDiscordClient client,
|
public static async Task<Model> ModifyAsync(IRole role, BaseDiscordClient client,
|
||||||
Action<ModifyGuildRoleParams> func, RequestOptions options)
|
Action<ModifyGuildRoleParams> func, RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyGuildRoleParams();
|
var args = new ModifyGuildRoleParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifyGuildRoleAsync(role.Guild.Id, role.Id, args, options);
|
return await client.ApiClient.ModifyGuildRoleAsync(role.Guild.Id, role.Id, args, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,8 @@ namespace Discord.Rest
|
|||||||
{
|
{
|
||||||
if (Id != Discord.CurrentUser.Id)
|
if (Id != Discord.CurrentUser.Id)
|
||||||
throw new InvalidOperationException("Unable to modify this object using a different token.");
|
throw new InvalidOperationException("Unable to modify this object using a different token.");
|
||||||
await UserHelper.ModifyAsync(this, Discord, func, options);
|
var model = await UserHelper.ModifyAsync(this, Discord, func, options);
|
||||||
|
Update(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
Task ISelfUser.ModifyStatusAsync(Action<ModifyPresenceParams> func, RequestOptions options) { throw new NotSupportedException(); }
|
Task ISelfUser.ModifyStatusAsync(Action<ModifyPresenceParams> func, RequestOptions options) { throw new NotSupportedException(); }
|
||||||
|
|||||||
@@ -1,24 +1,26 @@
|
|||||||
using Discord.API.Rest;
|
using Discord.API.Rest;
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Model = Discord.API.User;
|
||||||
|
|
||||||
namespace Discord.Rest
|
namespace Discord.Rest
|
||||||
{
|
{
|
||||||
internal static class UserHelper
|
internal static class UserHelper
|
||||||
{
|
{
|
||||||
public static async Task ModifyAsync(ISelfUser user, BaseDiscordClient client, Action<ModifyCurrentUserParams> func,
|
public static async Task<Model> ModifyAsync(ISelfUser user, BaseDiscordClient client, Action<ModifyCurrentUserParams> func,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyCurrentUserParams();
|
var args = new ModifyCurrentUserParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifySelfAsync(args, options);
|
return await client.ApiClient.ModifySelfAsync(args, options);
|
||||||
}
|
}
|
||||||
public static async Task ModifyAsync(IGuildUser user, BaseDiscordClient client, Action<ModifyGuildMemberParams> func,
|
public static async Task<ModifyGuildMemberParams> ModifyAsync(IGuildUser user, BaseDiscordClient client, Action<ModifyGuildMemberParams> func,
|
||||||
RequestOptions options)
|
RequestOptions options)
|
||||||
{
|
{
|
||||||
var args = new ModifyGuildMemberParams();
|
var args = new ModifyGuildMemberParams();
|
||||||
func(args);
|
func(args);
|
||||||
await client.ApiClient.ModifyGuildMemberAsync(user.GuildId, user.Id, args, options);
|
await client.ApiClient.ModifyGuildMemberAsync(user.GuildId, user.Id, args, options);
|
||||||
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task KickAsync(IGuildUser user, BaseDiscordClient client,
|
public static async Task KickAsync(IGuildUser user, BaseDiscordClient client,
|
||||||
|
|||||||
Reference in New Issue
Block a user