@@ -47,4 +47,9 @@ public class ForumChannelProperties : TextChannelProperties | |||||
/// Gets or sets a collection of tags inside of this forum channel. | /// Gets or sets a collection of tags inside of this forum channel. | ||||
/// </summary> | /// </summary> | ||||
public Optional<IEnumerable<ForumTagProperties>> Tags { get; set; } | public Optional<IEnumerable<ForumTagProperties>> Tags { get; set; } | ||||
/// <summary> | |||||
/// Gets or sets a new default reaction emoji in this forum channel. | |||||
/// </summary> | |||||
public Optional<IEmote> DefaultReactionEmoji { get; set; } | |||||
} | } |
@@ -5,7 +5,7 @@ namespace Discord.API; | |||||
public class ForumReactionEmoji | public class ForumReactionEmoji | ||||
{ | { | ||||
[JsonProperty("emoji_id")] | [JsonProperty("emoji_id")] | ||||
public Optional<ulong> EmojiId { get; set; } | |||||
public Optional<ulong?> EmojiId { get; set; } | |||||
[JsonProperty("emoji_name")] | [JsonProperty("emoji_name")] | ||||
public Optional<string> EmojiName { get; set; } | public Optional<string> EmojiName { get; set; } | ||||
@@ -7,11 +7,14 @@ namespace Discord.API.Rest; | |||||
internal class ModifyForumChannelParams : ModifyTextChannelParams | internal class ModifyForumChannelParams : ModifyTextChannelParams | ||||
{ | { | ||||
[JsonProperty("available_tags")] | [JsonProperty("available_tags")] | ||||
public Optional<ForumTagParams[]> Tags { get; set; } | |||||
public Optional<ModifyForumTagParams[]> Tags { get; set; } | |||||
[JsonProperty("default_thread_rate_limit_per_user")] | [JsonProperty("default_thread_rate_limit_per_user")] | ||||
public Optional<int> DefaultSlowModeInterval { get; set; } | public Optional<int> DefaultSlowModeInterval { get; set; } | ||||
[JsonProperty("rate_limit_per_user")] | [JsonProperty("rate_limit_per_user")] | ||||
public Optional<int> ThreadCreationInterval { get; set; } | public Optional<int> ThreadCreationInterval { get; set; } | ||||
[JsonProperty("default_reaction_emoji")] | |||||
public Optional<ModifyForumReactionEmojiParams> DefaultReactionEmoji { get; set; } | |||||
} | } |
@@ -0,0 +1,15 @@ | |||||
using Newtonsoft.Json; | |||||
namespace Discord.API; | |||||
[JsonObject(MemberSerialization = MemberSerialization.OptIn)] | |||||
public class ModifyForumReactionEmojiParams | |||||
{ | |||||
[JsonProperty("emoji_id")] | |||||
public Optional<ulong?> EmojiId { get; set; } | |||||
[JsonProperty("emoji_name")] | |||||
public Optional<string> EmojiName { get; set; } | |||||
} | |||||
@@ -3,7 +3,7 @@ using Newtonsoft.Json; | |||||
namespace Discord.API | namespace Discord.API | ||||
{ | { | ||||
[JsonObject(MemberSerialization = MemberSerialization.OptIn)] | [JsonObject(MemberSerialization = MemberSerialization.OptIn)] | ||||
internal class ForumTagParams | |||||
internal class ModifyForumTagParams | |||||
{ | { | ||||
[JsonProperty("id")] | [JsonProperty("id")] | ||||
public Optional<ulong> Id { get; set; } | public Optional<ulong> Id { get; set; } |
@@ -1,3 +1,4 @@ | |||||
using Discord.API; | |||||
using System; | using System; | ||||
using System.Linq; | using System.Linq; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
@@ -30,7 +31,7 @@ internal static class ForumHelper | |||||
DefaultSlowModeInterval = args.DefaultSlowModeInterval, | DefaultSlowModeInterval = args.DefaultSlowModeInterval, | ||||
ThreadCreationInterval = args.ThreadCreationInterval, | ThreadCreationInterval = args.ThreadCreationInterval, | ||||
Tags = args.Tags.IsSpecified | Tags = args.Tags.IsSpecified | ||||
? args.Tags.Value.Select(tag => new API.ForumTagParams | |||||
? args.Tags.Value.Select(tag => new API.ModifyForumTagParams | |||||
{ | { | ||||
Name = tag.Name, | Name = tag.Name, | ||||
EmojiId = tag.Emoji is Emote emote | EmojiId = tag.Emoji is Emote emote | ||||
@@ -40,9 +41,18 @@ internal static class ForumHelper | |||||
? emoji.Name | ? emoji.Name | ||||
: Optional<string>.Unspecified | : Optional<string>.Unspecified | ||||
}).ToArray() | }).ToArray() | ||||
: Optional.Create<API.ForumTagParams[]>(), | |||||
: Optional.Create<API.ModifyForumTagParams[]>(), | |||||
Flags = args.Flags.GetValueOrDefault(), | Flags = args.Flags.GetValueOrDefault(), | ||||
Topic = args.Topic, | Topic = args.Topic, | ||||
DefaultReactionEmoji = args.DefaultReactionEmoji.IsSpecified | |||||
? new API.ModifyForumReactionEmojiParams | |||||
{ | |||||
EmojiId = args.DefaultReactionEmoji.Value is Emote emote ? | |||||
emote.Id : Optional<ulong?>.Unspecified, | |||||
EmojiName = args.DefaultReactionEmoji.Value is Emoji emoji ? | |||||
emoji.Name : Optional<string>.Unspecified | |||||
} | |||||
: Optional<ModifyForumReactionEmojiParams>.Unspecified | |||||
}; | }; | ||||
return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); | return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); | ||||
} | } | ||||
@@ -74,7 +74,7 @@ namespace Discord.Rest | |||||
if (model.DefaultReactionEmoji.IsSpecified) | if (model.DefaultReactionEmoji.IsSpecified) | ||||
{ | { | ||||
if (model.DefaultReactionEmoji.Value.EmojiId.IsSpecified && model.DefaultReactionEmoji.Value.EmojiId.Value != 0) | if (model.DefaultReactionEmoji.Value.EmojiId.IsSpecified && model.DefaultReactionEmoji.Value.EmojiId.Value != 0) | ||||
DefaultReactionEmoji = new Emote(model.DefaultReactionEmoji.Value.EmojiId.Value, null, false); | |||||
DefaultReactionEmoji = new Emote(model.DefaultReactionEmoji.Value.EmojiId.Value.GetValueOrDefault(), null, false); | |||||
else if (model.DefaultReactionEmoji.Value.EmojiName.IsSpecified) | else if (model.DefaultReactionEmoji.Value.EmojiName.IsSpecified) | ||||
DefaultReactionEmoji = new Emoji(model.DefaultReactionEmoji.Value.EmojiName.Value); | DefaultReactionEmoji = new Emoji(model.DefaultReactionEmoji.Value.EmojiName.Value); | ||||
else | else | ||||
@@ -80,7 +80,7 @@ namespace Discord.WebSocket | |||||
if (model.DefaultReactionEmoji.IsSpecified) | if (model.DefaultReactionEmoji.IsSpecified) | ||||
{ | { | ||||
if (model.DefaultReactionEmoji.Value.EmojiId.IsSpecified && model.DefaultReactionEmoji.Value.EmojiId.Value != 0) | if (model.DefaultReactionEmoji.Value.EmojiId.IsSpecified && model.DefaultReactionEmoji.Value.EmojiId.Value != 0) | ||||
DefaultReactionEmoji = new Emote(model.DefaultReactionEmoji.Value.EmojiId.Value, null, false); | |||||
DefaultReactionEmoji = new Emote(model.DefaultReactionEmoji.Value.EmojiId.Value.GetValueOrDefault(), null, false); | |||||
else if (model.DefaultReactionEmoji.Value.EmojiName.IsSpecified) | else if (model.DefaultReactionEmoji.Value.EmojiName.IsSpecified) | ||||
DefaultReactionEmoji = new Emoji(model.DefaultReactionEmoji.Value.EmojiName.Value); | DefaultReactionEmoji = new Emoji(model.DefaultReactionEmoji.Value.EmojiName.Value); | ||||
else | else | ||||