|
|
@@ -1,3 +1,4 @@ |
|
|
|
using Discord.API; |
|
|
|
using Discord.API.Rest; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
@@ -252,6 +253,7 @@ namespace Discord.Rest |
|
|
|
Deny = overwrite.Permissions.DenyValue.ToString() |
|
|
|
}).ToArray() |
|
|
|
: Optional.Create<API.Overwrite[]>(), |
|
|
|
DefaultAutoArchiveDuration = props.AutoArchiveDuration |
|
|
|
}; |
|
|
|
var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); |
|
|
|
return RestTextChannel.Create(client, guild, model); |
|
|
@@ -338,6 +340,62 @@ namespace Discord.Rest |
|
|
|
var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); |
|
|
|
return RestCategoryChannel.Create(client, guild, model); |
|
|
|
} |
|
|
|
|
|
|
|
/// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception> |
|
|
|
public static async Task<RestForumChannel> CreateForumChannelAsync(IGuild guild, BaseDiscordClient client, |
|
|
|
string name, RequestOptions options, Action<ForumChannelProperties> func = null) |
|
|
|
{ |
|
|
|
if (name == null) |
|
|
|
throw new ArgumentNullException(paramName: nameof(name)); |
|
|
|
|
|
|
|
var props = new ForumChannelProperties(); |
|
|
|
func?.Invoke(props); |
|
|
|
|
|
|
|
var args = new CreateGuildChannelParams(name, ChannelType.Forum) |
|
|
|
{ |
|
|
|
Position = props.Position, |
|
|
|
Overwrites = props.PermissionOverwrites.IsSpecified |
|
|
|
? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite |
|
|
|
{ |
|
|
|
TargetId = overwrite.TargetId, |
|
|
|
TargetType = overwrite.TargetType, |
|
|
|
Allow = overwrite.Permissions.AllowValue.ToString(), |
|
|
|
Deny = overwrite.Permissions.DenyValue.ToString() |
|
|
|
}).ToArray() |
|
|
|
: Optional.Create<API.Overwrite[]>(), |
|
|
|
SlowModeInterval = props.ThreadCreationInterval, |
|
|
|
AvailableTags = props.Tags.GetValueOrDefault().Select( |
|
|
|
x => new ModifyForumTagParams |
|
|
|
{ |
|
|
|
Id = x.Id, |
|
|
|
Name = x.Name, |
|
|
|
EmojiId = x.Emoji is Emote emote |
|
|
|
? emote.Id |
|
|
|
: Optional<ulong?>.Unspecified, |
|
|
|
EmojiName = x.Emoji is Emoji emoji |
|
|
|
? emoji.Name |
|
|
|
: Optional<string>.Unspecified, |
|
|
|
Moderated = x.IsModerated |
|
|
|
}).ToArray(), |
|
|
|
DefaultReactionEmoji = props.DefaultReactionEmoji.IsSpecified |
|
|
|
? new API.ModifyForumReactionEmojiParams |
|
|
|
{ |
|
|
|
EmojiId = props.DefaultReactionEmoji.Value is Emote emote ? |
|
|
|
emote.Id : Optional<ulong?>.Unspecified, |
|
|
|
EmojiName = props.DefaultReactionEmoji.Value is Emoji emoji ? |
|
|
|
emoji.Name : Optional<string>.Unspecified |
|
|
|
} |
|
|
|
: Optional<ModifyForumReactionEmojiParams>.Unspecified, |
|
|
|
ThreadRateLimitPerUser = props.DefaultSlowModeInterval, |
|
|
|
CategoryId = props.CategoryId, |
|
|
|
IsNsfw = props.IsNsfw, |
|
|
|
Topic = props.Topic, |
|
|
|
DefaultAutoArchiveDuration = props.AutoArchiveDuration |
|
|
|
}; |
|
|
|
|
|
|
|
var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); |
|
|
|
return RestForumChannel.Create(client, guild, model); |
|
|
|
} |
|
|
|
#endregion |
|
|
|
|
|
|
|
#region Voice Regions |
|
|
|