[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,
|
||||
MaximumPruneRequestReached = 30040,
|
||||
MaximumGuildWidgetsReached = 30042,
|
||||
#endregion
|
||||
|
||||
#region General Request Errors (40XXX)
|
||||
BitrateIsTooHighForChannelOfThisType = 30052,
|
||||
MaximumNumberOfEditsReached = 30046,
|
||||
MaximumNumberOfPinnedThreadsInAForumChannelReached = 30047,
|
||||
MaximumNumberOfTagsInAForumChannelReached = 30048,
|
||||
MaximumNumberOfWebhooksReached = 30058,
|
||||
#endregion
|
||||
|
||||
#region General Request Errors (40XXX)
|
||||
TokenUnauthorized = 40001,
|
||||
InvalidVerification = 40002,
|
||||
OpeningDMTooFast = 40003,
|
||||
@@ -118,10 +119,11 @@ namespace Discord
|
||||
ApplicationNameAlreadyExists = 40041,
|
||||
ApplicationInteractionFailedToSend = 40043,
|
||||
CannotSendAMessageInAForumChannel = 40058,
|
||||
ThereAreNoTagsAvailableThatCanBeSetByNonModerators = 40066,
|
||||
ATagIsRequiredToCreateAForumPostInThisChannel = 40067,
|
||||
InteractionHasAlreadyBeenAcknowledged = 40060,
|
||||
TagNamesMustBeUnique = 40061,
|
||||
ServiceResourceIsBeingRateLimited = 40062,
|
||||
ThereAreNoTagsAvailableThatCanBeSetByNonModerators = 40066,
|
||||
ATagIsRequiredToCreateAForumPostInThisChannel = 40067,
|
||||
#endregion
|
||||
|
||||
#region Action Preconditions/Checks (50XXX)
|
||||
@@ -160,6 +162,7 @@ namespace Discord
|
||||
InvalidFileUpload = 50046,
|
||||
CannotSelfRedeemGift = 50054,
|
||||
InvalidGuild = 50055,
|
||||
InvalidRequestOrigin = 50067,
|
||||
InvalidMessageType = 50068,
|
||||
PaymentSourceRequiredForGift = 50070,
|
||||
CannotModifySystemWebhook = 50073,
|
||||
|
||||
@@ -13,18 +13,28 @@ namespace Discord
|
||||
/// <summary>
|
||||
/// Deny the messages that are sent when a user joins the guild.
|
||||
/// </summary>
|
||||
WelcomeMessage = 0b1,
|
||||
WelcomeMessage = 1 << 0,
|
||||
/// <summary>
|
||||
/// Deny the messages that are sent when a user boosts the guild.
|
||||
/// </summary>
|
||||
GuildBoost = 0b10,
|
||||
GuildBoost = 1 << 1,
|
||||
/// <summary>
|
||||
/// Deny the messages that are related to guild setup.
|
||||
/// </summary>
|
||||
GuildSetupTip = 0b100,
|
||||
GuildSetupTip = 1 << 2,
|
||||
/// <summary>
|
||||
/// Deny the reply with sticker button on welcome messages.
|
||||
/// </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>
|
||||
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>
|
||||
/// Adds a reaction to this message.
|
||||
/// </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>
|
||||
ThreadStarterMessage = 21,
|
||||
/// <summary>
|
||||
/// The message for a invite reminder.
|
||||
/// The message for an invite reminder.
|
||||
/// </summary>
|
||||
GuildInviteReminder = 22,
|
||||
/// <summary>
|
||||
/// The message for a context menu command.
|
||||
/// </summary>
|
||||
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; }
|
||||
[JsonProperty("sticker_items")]
|
||||
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/>
|
||||
public MessageType Type { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IReadOnlyCollection<ActionRowComponent> Components { get; private set; }
|
||||
/// <summary>
|
||||
@@ -243,6 +246,15 @@ namespace Discord.Rest
|
||||
_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 />
|
||||
public async Task UpdateAsync(RequestOptions options = null)
|
||||
|
||||
@@ -78,6 +78,9 @@ namespace Discord.WebSocket
|
||||
/// <inheritdoc/>
|
||||
public MessageType Type { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Returns all attachments included in this message.
|
||||
/// </summary>
|
||||
@@ -271,6 +274,15 @@ namespace Discord.WebSocket
|
||||
|
||||
if (model.Flags.IsSpecified)
|
||||
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 />
|
||||
|
||||
Reference in New Issue
Block a user