[Feature] Add new message types & error codes (#2562)
* Add new message types & error codes * add role subscription system channel flags and message property
This commit is contained in:
@@ -98,13 +98,14 @@ namespace Discord
|
|||||||
MaximumStickersReached = 30039,
|
MaximumStickersReached = 30039,
|
||||||
MaximumPruneRequestReached = 30040,
|
MaximumPruneRequestReached = 30040,
|
||||||
MaximumGuildWidgetsReached = 30042,
|
MaximumGuildWidgetsReached = 30042,
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region General Request Errors (40XXX)
|
|
||||||
BitrateIsTooHighForChannelOfThisType = 30052,
|
BitrateIsTooHighForChannelOfThisType = 30052,
|
||||||
MaximumNumberOfEditsReached = 30046,
|
MaximumNumberOfEditsReached = 30046,
|
||||||
MaximumNumberOfPinnedThreadsInAForumChannelReached = 30047,
|
MaximumNumberOfPinnedThreadsInAForumChannelReached = 30047,
|
||||||
MaximumNumberOfTagsInAForumChannelReached = 30048,
|
MaximumNumberOfTagsInAForumChannelReached = 30048,
|
||||||
|
MaximumNumberOfWebhooksReached = 30058,
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region General Request Errors (40XXX)
|
||||||
TokenUnauthorized = 40001,
|
TokenUnauthorized = 40001,
|
||||||
InvalidVerification = 40002,
|
InvalidVerification = 40002,
|
||||||
OpeningDMTooFast = 40003,
|
OpeningDMTooFast = 40003,
|
||||||
@@ -118,10 +119,11 @@ namespace Discord
|
|||||||
ApplicationNameAlreadyExists = 40041,
|
ApplicationNameAlreadyExists = 40041,
|
||||||
ApplicationInteractionFailedToSend = 40043,
|
ApplicationInteractionFailedToSend = 40043,
|
||||||
CannotSendAMessageInAForumChannel = 40058,
|
CannotSendAMessageInAForumChannel = 40058,
|
||||||
ThereAreNoTagsAvailableThatCanBeSetByNonModerators = 40066,
|
|
||||||
ATagIsRequiredToCreateAForumPostInThisChannel = 40067,
|
|
||||||
InteractionHasAlreadyBeenAcknowledged = 40060,
|
InteractionHasAlreadyBeenAcknowledged = 40060,
|
||||||
TagNamesMustBeUnique = 40061,
|
TagNamesMustBeUnique = 40061,
|
||||||
|
ServiceResourceIsBeingRateLimited = 40062,
|
||||||
|
ThereAreNoTagsAvailableThatCanBeSetByNonModerators = 40066,
|
||||||
|
ATagIsRequiredToCreateAForumPostInThisChannel = 40067,
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Action Preconditions/Checks (50XXX)
|
#region Action Preconditions/Checks (50XXX)
|
||||||
@@ -160,6 +162,7 @@ namespace Discord
|
|||||||
InvalidFileUpload = 50046,
|
InvalidFileUpload = 50046,
|
||||||
CannotSelfRedeemGift = 50054,
|
CannotSelfRedeemGift = 50054,
|
||||||
InvalidGuild = 50055,
|
InvalidGuild = 50055,
|
||||||
|
InvalidRequestOrigin = 50067,
|
||||||
InvalidMessageType = 50068,
|
InvalidMessageType = 50068,
|
||||||
PaymentSourceRequiredForGift = 50070,
|
PaymentSourceRequiredForGift = 50070,
|
||||||
CannotModifySystemWebhook = 50073,
|
CannotModifySystemWebhook = 50073,
|
||||||
|
|||||||
@@ -13,18 +13,28 @@ namespace Discord
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deny the messages that are sent when a user joins the guild.
|
/// Deny the messages that are sent when a user joins the guild.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
WelcomeMessage = 0b1,
|
WelcomeMessage = 1 << 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deny the messages that are sent when a user boosts the guild.
|
/// Deny the messages that are sent when a user boosts the guild.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
GuildBoost = 0b10,
|
GuildBoost = 1 << 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deny the messages that are related to guild setup.
|
/// Deny the messages that are related to guild setup.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
GuildSetupTip = 0b100,
|
GuildSetupTip = 1 << 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deny the reply with sticker button on welcome messages.
|
/// Deny the reply with sticker button on welcome messages.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
WelcomeMessageReply = 0b1000
|
WelcomeMessageReply = 1 << 3,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deny role subscription purchase and renewal notifications in the guild.
|
||||||
|
/// </summary>
|
||||||
|
RoleSubscriptionPurchase = 1 << 4,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hide role subscription sticker reply buttons in the guild.
|
||||||
|
/// </summary>
|
||||||
|
RoleSubscriptionPurchaseReplies = 1 << 5,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,6 +209,14 @@ namespace Discord
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
IMessageInteraction Interaction { get; }
|
IMessageInteraction Interaction { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the data of the role subscription purchase or renewal that prompted this <see cref="MessageType.RoleSubscriptionPurchase"/> message.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// A <see cref="MessageRoleSubscriptionData"/> if the message is a role subscription purchase message; otherwise <see langword="null"/>.
|
||||||
|
/// </returns>
|
||||||
|
MessageRoleSubscriptionData RoleSubscriptionData { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a reaction to this message.
|
/// Adds a reaction to this message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
namespace Discord;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a role subscription data in <see cref="IMessage"/>.
|
||||||
|
/// </summary>
|
||||||
|
public class MessageRoleSubscriptionData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the id of the sku and listing that the user is subscribed to.
|
||||||
|
/// </summary>
|
||||||
|
public ulong Id { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the name of the tier that the user is subscribed to.
|
||||||
|
/// </summary>
|
||||||
|
public string TierName { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the cumulative number of months that the user has been subscribed for.
|
||||||
|
/// </summary>
|
||||||
|
public int MonthsSubscribed { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets whether this notification is for a renewal rather than a new purchase.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsRenewal { get; }
|
||||||
|
|
||||||
|
internal MessageRoleSubscriptionData(ulong id, string tierName, int monthsSubscribed, bool isRenewal)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
TierName = tierName;
|
||||||
|
MonthsSubscribed = monthsSubscribed;
|
||||||
|
IsRenewal = isRenewal;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -99,12 +99,48 @@ namespace Discord
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
ThreadStarterMessage = 21,
|
ThreadStarterMessage = 21,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The message for a invite reminder.
|
/// The message for an invite reminder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
GuildInviteReminder = 22,
|
GuildInviteReminder = 22,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The message for a context menu command.
|
/// The message for a context menu command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ContextMenuCommand = 23,
|
ContextMenuCommand = 23,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for an automod action.
|
||||||
|
/// </summary>
|
||||||
|
AutoModerationAction = 24,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a role subscription purchase.
|
||||||
|
/// </summary>
|
||||||
|
RoleSubscriptionPurchase = 25,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for an interaction premium upsell.
|
||||||
|
/// </summary>
|
||||||
|
InteractionPremiumUpsell = 26,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a stage start.
|
||||||
|
/// </summary>
|
||||||
|
StageStart = 27,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a stage end.
|
||||||
|
/// </summary>
|
||||||
|
StageEnd = 28,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a stage speaker.
|
||||||
|
/// </summary>
|
||||||
|
StageSpeaker = 29,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a stage raise hand.
|
||||||
|
/// </summary>
|
||||||
|
StageRaiseHand = 30,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a stage raise hand.
|
||||||
|
/// </summary>
|
||||||
|
StageTopic = 31,
|
||||||
|
/// <summary>
|
||||||
|
/// The message for a guild application premium subscription.
|
||||||
|
/// </summary>
|
||||||
|
GuildApplicationPremiumSubscription = 32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,5 +62,7 @@ namespace Discord.API
|
|||||||
public Optional<MessageInteraction> Interaction { get; set; }
|
public Optional<MessageInteraction> Interaction { get; set; }
|
||||||
[JsonProperty("sticker_items")]
|
[JsonProperty("sticker_items")]
|
||||||
public Optional<StickerItem[]> StickerItems { get; set; }
|
public Optional<StickerItem[]> StickerItems { get; set; }
|
||||||
|
[JsonProperty("role_subscription_data")]
|
||||||
|
public Optional<MessageRoleSubscriptionData> RoleSubscriptionData { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Discord.API;
|
||||||
|
|
||||||
|
internal class MessageRoleSubscriptionData
|
||||||
|
{
|
||||||
|
[JsonProperty("role_subscription_listing_id")]
|
||||||
|
public ulong SubscriptionListingId { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("tier_name")]
|
||||||
|
public string TierName { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("total_months_subscribed")]
|
||||||
|
public int MonthsSubscribed { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("is_renewal")]
|
||||||
|
public bool IsRenewal { get; set; }
|
||||||
|
}
|
||||||
@@ -80,6 +80,9 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public MessageType Type { get; private set; }
|
public MessageType Type { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public IReadOnlyCollection<ActionRowComponent> Components { get; private set; }
|
public IReadOnlyCollection<ActionRowComponent> Components { get; private set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -243,6 +246,15 @@ namespace Discord.Rest
|
|||||||
_userMentions = newMentions.ToImmutable();
|
_userMentions = newMentions.ToImmutable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (model.RoleSubscriptionData.IsSpecified)
|
||||||
|
{
|
||||||
|
RoleSubscriptionData = new(
|
||||||
|
model.RoleSubscriptionData.Value.SubscriptionListingId,
|
||||||
|
model.RoleSubscriptionData.Value.TierName,
|
||||||
|
model.RoleSubscriptionData.Value.MonthsSubscribed,
|
||||||
|
model.RoleSubscriptionData.Value.IsRenewal);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task UpdateAsync(RequestOptions options = null)
|
public async Task UpdateAsync(RequestOptions options = null)
|
||||||
|
|||||||
@@ -78,6 +78,9 @@ namespace Discord.WebSocket
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public MessageType Type { get; private set; }
|
public MessageType Type { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all attachments included in this message.
|
/// Returns all attachments included in this message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -271,6 +274,15 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
if (model.Flags.IsSpecified)
|
if (model.Flags.IsSpecified)
|
||||||
Flags = model.Flags.Value;
|
Flags = model.Flags.Value;
|
||||||
|
|
||||||
|
if (model.RoleSubscriptionData.IsSpecified)
|
||||||
|
{
|
||||||
|
RoleSubscriptionData = new(
|
||||||
|
model.RoleSubscriptionData.Value.SubscriptionListingId,
|
||||||
|
model.RoleSubscriptionData.Value.TierName,
|
||||||
|
model.RoleSubscriptionData.Value.MonthsSubscribed,
|
||||||
|
model.RoleSubscriptionData.Value.IsRenewal);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|||||||
Reference in New Issue
Block a user