1456 lines
32 KiB
Python
1456 lines
32 KiB
Python
"""
|
|
Custom exceptions for the Disagreement library.
|
|
"""
|
|
|
|
from typing import Optional, Any
|
|
|
|
|
|
class DisagreementException(Exception):
|
|
"""Base exception class for all errors raised by this library."""
|
|
|
|
pass
|
|
|
|
|
|
class HTTPException(DisagreementException):
|
|
"""Exception raised for HTTP-related errors.
|
|
|
|
Attributes:
|
|
response: The aiohttp response object, if available.
|
|
status: The HTTP status code.
|
|
text: The response text, if available.
|
|
error_code: Discord specific error code, if available.
|
|
"""
|
|
|
|
def __init__(
|
|
self, response=None, message=None, *, status=None, text=None, error_code=None
|
|
):
|
|
self.response = response
|
|
self.status = status or (response.status if response else None)
|
|
self.text = text or (
|
|
response.text if response else None
|
|
) # Or await response.text() if in async context
|
|
self.error_code = error_code
|
|
|
|
full_message = f"HTTP {self.status}"
|
|
if message:
|
|
full_message += f": {message}"
|
|
elif self.text:
|
|
full_message += f": {self.text}"
|
|
if self.error_code:
|
|
full_message += f" (Discord Error Code: {self.error_code})"
|
|
|
|
super().__init__(full_message)
|
|
|
|
|
|
class GatewayException(DisagreementException):
|
|
"""Exception raised for errors related to the Discord Gateway connection or protocol."""
|
|
|
|
pass
|
|
|
|
|
|
class AuthenticationError(DisagreementException):
|
|
"""Exception raised for authentication failures (e.g., invalid token)."""
|
|
|
|
pass
|
|
|
|
|
|
class RateLimitError(HTTPException):
|
|
"""
|
|
Exception raised when a rate limit is encountered.
|
|
|
|
Attributes:
|
|
retry_after (float): The number of seconds to wait before retrying.
|
|
is_global (bool): Whether this is a global rate limit.
|
|
"""
|
|
|
|
def __init__(
|
|
self, response, message=None, *, retry_after: float, is_global: bool = False
|
|
):
|
|
self.retry_after = retry_after
|
|
self.is_global = is_global
|
|
super().__init__(
|
|
response,
|
|
message
|
|
or f"Rate limited. Retry after: {retry_after}s. Global: {is_global}",
|
|
)
|
|
|
|
|
|
# Specific HTTP error exceptions
|
|
|
|
|
|
class NotFound(HTTPException):
|
|
"""Raised for 404 Not Found errors."""
|
|
|
|
pass
|
|
|
|
|
|
class Forbidden(HTTPException):
|
|
"""Raised for 403 Forbidden errors."""
|
|
|
|
pass
|
|
|
|
|
|
class GeneralError(HTTPException):
|
|
"""General error (such as a malformed request body, amongst other things) (Code: 0)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownAccount(HTTPException):
|
|
"""Unknown account (Code: 10001)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownApplication(HTTPException):
|
|
"""Unknown application (Code: 10002)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownChannel(HTTPException):
|
|
"""Unknown channel (Code: 10003)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGuild(HTTPException):
|
|
"""Unknown guild (Code: 10004)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownIntegration(HTTPException):
|
|
"""Unknown integration (Code: 10005)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownInvite(HTTPException):
|
|
"""Unknown invite (Code: 10006)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownMember(HTTPException):
|
|
"""Unknown member (Code: 10007)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownMessage(HTTPException):
|
|
"""Unknown message (Code: 10008)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownPermissionOverwrite(HTTPException):
|
|
"""Unknown permission overwrite (Code: 10009)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownProvider(HTTPException):
|
|
"""Unknown provider (Code: 10010)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownRole(HTTPException):
|
|
"""Unknown role (Code: 10011)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownToken(HTTPException):
|
|
"""Unknown token (Code: 10012)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownUser(HTTPException):
|
|
"""Unknown user (Code: 10013)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownEmoji(HTTPException):
|
|
"""Unknown emoji (Code: 10014)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownWebhook(HTTPException):
|
|
"""Unknown webhook (Code: 10015)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownWebhookService(HTTPException):
|
|
"""Unknown webhook service (Code: 10016)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownSession(HTTPException):
|
|
"""Unknown session (Code: 10020)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownAsset(HTTPException):
|
|
"""Unknown Asset (Code: 10021)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownBan(HTTPException):
|
|
"""Unknown ban (Code: 10026)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownSKU(HTTPException):
|
|
"""Unknown SKU (Code: 10027)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownStoreListing(HTTPException):
|
|
"""Unknown Store Listing (Code: 10028)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownEntitlement(HTTPException):
|
|
"""Unknown entitlement (Code: 10029)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownBuild(HTTPException):
|
|
"""Unknown build (Code: 10030)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownLobby(HTTPException):
|
|
"""Unknown lobby (Code: 10031)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownBranch(HTTPException):
|
|
"""Unknown branch (Code: 10032)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownStoreDirectoryLayout(HTTPException):
|
|
"""Unknown store directory layout (Code: 10033)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownRedistributable(HTTPException):
|
|
"""Unknown redistributable (Code: 10036)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGiftCode(HTTPException):
|
|
"""Unknown gift code (Code: 10038)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownStream(HTTPException):
|
|
"""Unknown stream (Code: 10049)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownPremiumServerSubscribeCooldown(HTTPException):
|
|
"""Unknown premium server subscribe cooldown (Code: 10050)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGuildTemplate(HTTPException):
|
|
"""Unknown guild template (Code: 10057)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownDiscoverableServerCategory(HTTPException):
|
|
"""Unknown discoverable server category (Code: 10059)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownSticker(HTTPException):
|
|
"""Unknown sticker (Code: 10060)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownStickerPack(HTTPException):
|
|
"""Unknown sticker pack (Code: 10061)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownInteraction(HTTPException):
|
|
"""Unknown interaction (Code: 10062)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownApplicationCommand(HTTPException):
|
|
"""Unknown application command (Code: 10063)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownVoiceState(HTTPException):
|
|
"""Unknown voice state (Code: 10065)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownApplicationCommandPermissions(HTTPException):
|
|
"""Unknown application command permissions (Code: 10066)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownStageInstance(HTTPException):
|
|
"""Unknown Stage Instance (Code: 10067)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGuildMemberVerificationForm(HTTPException):
|
|
"""Unknown Guild Member Verification Form (Code: 10068)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGuildWelcomeScreen(HTTPException):
|
|
"""Unknown Guild Welcome Screen (Code: 10069)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGuildScheduledEvent(HTTPException):
|
|
"""Unknown Guild Scheduled Event (Code: 10070)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownGuildScheduledEventUser(HTTPException):
|
|
"""Unknown Guild Scheduled Event User (Code: 10071)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownTag(HTTPException):
|
|
"""Unknown Tag (Code: 10087)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnknownSound(HTTPException):
|
|
"""Unknown sound (Code: 10097)"""
|
|
|
|
pass
|
|
|
|
|
|
class BotsCannotUseThisEndpoint(HTTPException):
|
|
"""Bots cannot use this endpoint (Code: 20001)"""
|
|
|
|
pass
|
|
|
|
|
|
class OnlyBotsCanUseThisEndpoint(HTTPException):
|
|
"""Only bots can use this endpoint (Code: 20002)"""
|
|
|
|
pass
|
|
|
|
|
|
class ExplicitContentCannotBeSentToTheDesiredRecipients(HTTPException):
|
|
"""Explicit content cannot be sent to the desired recipient(s) (Code: 20009)"""
|
|
|
|
pass
|
|
|
|
|
|
class NotAuthorizedToPerformThisActionOnThisApplication(HTTPException):
|
|
"""You are not authorized to perform this action on this application (Code: 20012)"""
|
|
|
|
pass
|
|
|
|
|
|
class ActionCannotBePerformedDueToSlowmodeRateLimit(HTTPException):
|
|
"""This action cannot be performed due to slowmode rate limit (Code: 20016)"""
|
|
|
|
pass
|
|
|
|
|
|
class OnlyTheOwnerOfThisAccountCanPerformThisAction(HTTPException):
|
|
"""Only the owner of this account can perform this action (Code: 20018)"""
|
|
|
|
pass
|
|
|
|
|
|
class MessageCannotBeEditedDueToAnnouncementRateLimits(HTTPException):
|
|
"""This message cannot be edited due to announcement rate limits (Code: 20022)"""
|
|
|
|
pass
|
|
|
|
|
|
class UnderMinimumAge(HTTPException):
|
|
"""Under minimum age (Code: 20024)"""
|
|
|
|
pass
|
|
|
|
|
|
class ChannelHitWriteRateLimit(HTTPException):
|
|
"""The channel you are writing has hit the write rate limit (Code: 20028)"""
|
|
|
|
pass
|
|
|
|
|
|
class ServerHitWriteRateLimit(HTTPException):
|
|
"""The write action you are performing on the server has hit the write rate limit (Code: 20029)"""
|
|
|
|
pass
|
|
|
|
|
|
class DisallowedWordsInStageTopicOrNames(HTTPException):
|
|
"""Your Stage topic, server name, server description, or channel names contain words that are not allowed (Code: 20031)"""
|
|
|
|
pass
|
|
|
|
|
|
class GuildPremiumSubscriptionLevelTooLow(HTTPException):
|
|
"""Guild premium subscription level too low (Code: 20035)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfGuildsReached(HTTPException):
|
|
"""Maximum number of guilds reached (100) (Code: 30001)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfFriendsReached(HTTPException):
|
|
"""Maximum number of friends reached (1000) (Code: 30002)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfPinsReached(HTTPException):
|
|
"""Maximum number of pins reached for the channel (50) (Code: 30003)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfRecipientsReached(HTTPException):
|
|
"""Maximum number of recipients reached (10) (Code: 30004)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfGuildRolesReached(HTTPException):
|
|
"""Maximum number of guild roles reached (250) (Code: 30005)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfWebhooksReached(HTTPException):
|
|
"""Maximum number of webhooks reached (15) (Code: 30007)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfEmojisReached(HTTPException):
|
|
"""Maximum number of emojis reached (Code: 30008)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfReactionsReached(HTTPException):
|
|
"""Maximum number of reactions reached (20) (Code: 30010)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfGroupDMsReached(HTTPException):
|
|
"""Maximum number of group DMs reached (10) (Code: 30011)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfGuildChannelsReached(HTTPException):
|
|
"""Maximum number of guild channels reached (500) (Code: 30013)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfAttachmentsInAMessageReached(HTTPException):
|
|
"""Maximum number of attachments in a message reached (10) (Code: 30015)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfInvitesReached(HTTPException):
|
|
"""Maximum number of invites reached (1000) (Code: 30016)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfAnimatedEmojisReached(HTTPException):
|
|
"""Maximum number of animated emojis reached (Code: 30018)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfServerMembersReached(HTTPException):
|
|
"""Maximum number of server members reached (Code: 30019)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfServerCategoriesReached(HTTPException):
|
|
"""Maximum number of server categories has been reached (5) (Code: 30030)"""
|
|
|
|
pass
|
|
|
|
|
|
class GuildAlreadyHasATemplate(HTTPException):
|
|
"""Guild already has a template (Code: 30031)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfApplicationCommandsReached(HTTPException):
|
|
"""Maximum number of application commands reached (Code: 30032)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfThreadParticipantsReached(HTTPException):
|
|
"""Maximum number of thread participants has been reached (1000) (Code: 30033)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfDailyApplicationCommandCreatesReached(HTTPException):
|
|
"""Maximum number of daily application command creates has been reached (200) (Code: 30034)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfBansForNonGuildMembersExceeded(HTTPException):
|
|
"""Maximum number of bans for non-guild members have been exceeded (Code: 30035)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfBansFetchesReached(HTTPException):
|
|
"""Maximum number of bans fetches has been reached (Code: 30037)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfUncompletedGuildScheduledEventsReached(HTTPException):
|
|
"""Maximum number of uncompleted guild scheduled events reached (100) (Code: 30038)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfStickersReached(HTTPException):
|
|
"""Maximum number of stickers reached (Code: 30039)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfPruneRequestsReached(HTTPException):
|
|
"""Maximum number of prune requests has been reached. Try again later (Code: 30040)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfGuildWidgetSettingsUpdatesReached(HTTPException):
|
|
"""Maximum number of guild widget settings updates has been reached. Try again later (Code: 30042)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfSoundboardSoundsReached(HTTPException):
|
|
"""Maximum number of soundboard sounds reached (Code: 30045)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfEditsToMessagesOlderThan1HourReached(HTTPException):
|
|
"""Maximum number of edits to messages older than 1 hour reached. Try again later (Code: 30046)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfPinnedThreadsInAForumChannelReached(HTTPException):
|
|
"""Maximum number of pinned threads in a forum channel has been reached (Code: 30047)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfTagsInAForumChannelReached(HTTPException):
|
|
"""Maximum number of tags in a forum channel has been reached (Code: 30048)"""
|
|
|
|
pass
|
|
|
|
|
|
class BitrateIsTooHighForChannelOfThisType(HTTPException):
|
|
"""Bitrate is too high for channel of this type (Code: 30052)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfPremiumEmojisReached(HTTPException):
|
|
"""Maximum number of premium emojis reached (25) (Code: 30056)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfWebhooksPerGuildReached(HTTPException):
|
|
"""Maximum number of webhooks per guild reached (1000) (Code: 30058)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfChannelPermissionOverwritesReached(HTTPException):
|
|
"""Maximum number of channel permission overwrites reached (1000) (Code: 30061)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheChannelsForThisGuildAreTooLarge(HTTPException):
|
|
"""The channels for this guild are too large (Code: 30061)"""
|
|
|
|
pass
|
|
|
|
|
|
class Unauthorized(HTTPException):
|
|
"""Unauthorized. Provide a valid token and try again (Code: 40001)"""
|
|
|
|
pass
|
|
|
|
|
|
class YouNeedToVerifyYourAccount(HTTPException):
|
|
"""You need to verify your account in order to perform this action (Code: 40002)"""
|
|
|
|
pass
|
|
|
|
|
|
class YouAreOpeningDirectMessagesTooFast(HTTPException):
|
|
"""You are opening direct messages too fast (Code: 40003)"""
|
|
|
|
pass
|
|
|
|
|
|
class SendMessagesHasBeenTemporarilyDisabled(HTTPException):
|
|
"""Send messages has been temporarily disabled (Code: 40004)"""
|
|
|
|
pass
|
|
|
|
|
|
class RequestEntityTooLarge(HTTPException):
|
|
"""Request entity too large. Try sending something smaller in size (Code: 40005)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThisFeatureHasBeenTemporarilyDisabledServerSide(HTTPException):
|
|
"""This feature has been temporarily disabled server-side (Code: 40006)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheUserIsBannedFromThisGuild(HTTPException):
|
|
"""The user is banned from this guild (Code: 40007)"""
|
|
|
|
pass
|
|
|
|
|
|
class ConnectionHasBeenRevoked(HTTPException):
|
|
"""Connection has been revoked (Code: 40012)"""
|
|
|
|
pass
|
|
|
|
|
|
class OnlyConsumableSKUsCanBeConsumed(HTTPException):
|
|
"""Only consumable SKUs can be consumed (Code: 40018)"""
|
|
|
|
pass
|
|
|
|
|
|
class YouCanOnlyDeleteSandboxEntitlements(HTTPException):
|
|
"""You can only delete sandbox entitlements. (Code: 40019)"""
|
|
|
|
pass
|
|
|
|
|
|
class TargetUserIsNotConnectedToVoice(HTTPException):
|
|
"""Target user is not connected to voice (Code: 40032)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThisMessageHasAlreadyBeenCrossposted(HTTPException):
|
|
"""This message has already been crossposted (Code: 40033)"""
|
|
|
|
pass
|
|
|
|
|
|
class AnApplicationCommandWithThatNameAlreadyExists(HTTPException):
|
|
"""An application command with that name already exists (Code: 40041)"""
|
|
|
|
pass
|
|
|
|
|
|
class ApplicationInteractionFailedToSend(HTTPException):
|
|
"""Application interaction failed to send (Code: 40043)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotSendAMessageInAForumChannel(HTTPException):
|
|
"""Cannot send a message in a forum channel (Code: 40058)"""
|
|
|
|
pass
|
|
|
|
|
|
class InteractionHasAlreadyBeenAcknowledged(HTTPException):
|
|
"""Interaction has already been acknowledged (Code: 40060)"""
|
|
|
|
pass
|
|
|
|
|
|
class TagNamesMustBeUnique(HTTPException):
|
|
"""Tag names must be unique (Code: 40061)"""
|
|
|
|
pass
|
|
|
|
|
|
class ServiceResourceIsBeingRateLimited(HTTPException):
|
|
"""Service resource is being rate limited (Code: 40062)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThereAreNoTagsAvailableThatCanBeSetByNonModerators(HTTPException):
|
|
"""There are no tags available that can be set by non-moderators (Code: 40066)"""
|
|
|
|
pass
|
|
|
|
|
|
class ATagIsRequiredToCreateAForumPostInThisChannel(HTTPException):
|
|
"""A tag is required to create a forum post in this channel (Code: 40067)"""
|
|
|
|
pass
|
|
|
|
|
|
class AnEntitlementHasAlreadyBeenGrantedForThisResource(HTTPException):
|
|
"""An entitlement has already been granted for this resource (Code: 40074)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThisInteractionHasHitTheMaximumNumberOfFollowUpMessages(HTTPException):
|
|
"""This interaction has hit the maximum number of follow up messages (Code: 40094)"""
|
|
|
|
pass
|
|
|
|
|
|
class CloudflareIsBlockingYourRequest(HTTPException):
|
|
"""Cloudflare is blocking your request. This can often be resolved by setting a proper User Agent (Code: 40333)"""
|
|
|
|
pass
|
|
|
|
|
|
class MissingAccess(HTTPException):
|
|
"""Missing access (Code: 50001)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidAccountType(HTTPException):
|
|
"""Invalid account type (Code: 50002)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotExecuteActionOnADMChannel(HTTPException):
|
|
"""Cannot execute action on a DM channel (Code: 50003)"""
|
|
|
|
pass
|
|
|
|
|
|
class GuildWidgetDisabled(HTTPException):
|
|
"""Guild widget disabled (Code: 50004)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotEditAMessageAuthoredByAnotherUser(HTTPException):
|
|
"""Cannot edit a message authored by another user (Code: 50005)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotSendAnEmptyMessage(HTTPException):
|
|
"""Cannot send an empty message (Code: 50006)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotSendMessagesToThisUser(HTTPException):
|
|
"""Cannot send messages to this user (Code: 50007)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotSendMessagesInANonTextChannel(HTTPException):
|
|
"""Cannot send messages in a non-text channel (Code: 50008)"""
|
|
|
|
pass
|
|
|
|
|
|
class ChannelVerificationLevelIsTooHighForYouToGainAccess(HTTPException):
|
|
"""Channel verification level is too high for you to gain access (Code: 50009)"""
|
|
|
|
pass
|
|
|
|
|
|
class OAuth2ApplicationDoesNotHaveABot(HTTPException):
|
|
"""OAuth2 application does not have a bot (Code: 50010)"""
|
|
|
|
pass
|
|
|
|
|
|
class OAuth2ApplicationLimitReached(HTTPException):
|
|
"""OAuth2 application limit reached (Code: 50011)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidOAuth2State(HTTPException):
|
|
"""Invalid OAuth2 state (Code: 50012)"""
|
|
|
|
pass
|
|
|
|
|
|
class YouLackPermissionsToPerformThatAction(HTTPException):
|
|
"""You lack permissions to perform that action (Code: 50013)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidAuthenticationTokenProvided(HTTPException):
|
|
"""Invalid authentication token provided (Code: 50014)"""
|
|
|
|
pass
|
|
|
|
|
|
class NoteWasTooLong(HTTPException):
|
|
"""Note was too long (Code: 50015)"""
|
|
|
|
pass
|
|
|
|
|
|
class ProvidedTooFewOrTooManyMessagesToDelete(HTTPException):
|
|
"""Provided too few or too many messages to delete. Must provide at least 2 and fewer than 100 messages to delete (Code: 50016)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidMFALevel(HTTPException):
|
|
"""Invalid MFA Level (Code: 50017)"""
|
|
|
|
pass
|
|
|
|
|
|
class AMessageCanOnlyBePinnedToTheChannelItWasSentIn(HTTPException):
|
|
"""A message can only be pinned to the channel it was sent in (Code: 50019)"""
|
|
|
|
pass
|
|
|
|
|
|
class InviteCodeWasEitherInvalidOrTaken(HTTPException):
|
|
"""Invite code was either invalid or taken (Code: 50020)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotExecuteActionOnASystemMessage(HTTPException):
|
|
"""Cannot execute action on a system message (Code: 50021)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotExecuteActionOnThisChannelType(HTTPException):
|
|
"""Cannot execute action on this channel type (Code: 50024)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidOAuth2AccessTokenProvided(HTTPException):
|
|
"""Invalid OAuth2 access token provided (Code: 50025)"""
|
|
|
|
pass
|
|
|
|
|
|
class MissingRequiredOAuth2Scope(HTTPException):
|
|
"""Missing required OAuth2 scope (Code: 50026)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidWebhookTokenProvided(HTTPException):
|
|
"""Invalid webhook token provided (Code: 50027)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidRole(HTTPException):
|
|
"""Invalid role (Code: 50028)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidRecipients(HTTPException):
|
|
"""Invalid Recipient(s) (Code: 50033)"""
|
|
|
|
pass
|
|
|
|
|
|
class AMessageProvidedWasTooOldToBulkDelete(HTTPException):
|
|
"""A message provided was too old to bulk delete (Code: 50034)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidFormBody(HTTPException):
|
|
"""Invalid form body (returned for both application/json and multipart/form-data bodies), or invalid Content-Type provided (Code: 50035)"""
|
|
|
|
pass
|
|
|
|
|
|
class AnInviteWasAcceptedToAGuildTheApplicationBotIsNotIn(HTTPException):
|
|
"""An invite was accepted to a guild the application's bot is not in (Code: 50036)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidActivityAction(HTTPException):
|
|
"""Invalid Activity Action (Code: 50039)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidAPIVersionProvided(HTTPException):
|
|
"""Invalid API version provided (Code: 50041)"""
|
|
|
|
pass
|
|
|
|
|
|
class FileUploadedExceedsTheMaximumSize(HTTPException):
|
|
"""File uploaded exceeds the maximum size (Code: 50045)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidFileUploaded(HTTPException):
|
|
"""Invalid file uploaded (Code: 50046)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotSelfRedeemThisGift(HTTPException):
|
|
"""Cannot self-redeem this gift (Code: 50054)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidGuild(HTTPException):
|
|
"""Invalid Guild (Code: 50055)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidSKU(HTTPException):
|
|
"""Invalid SKU (Code: 50057)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidRequestOrigin(HTTPException):
|
|
"""Invalid request origin (Code: 50067)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidMessageType(HTTPException):
|
|
"""Invalid message type (Code: 50068)"""
|
|
|
|
pass
|
|
|
|
|
|
class PaymentSourceRequiredToRedeemGift(HTTPException):
|
|
"""Payment source required to redeem gift (Code: 50070)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotModifyASystemWebhook(HTTPException):
|
|
"""Cannot modify a system webhook (Code: 50073)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotDeleteAChannelRequiredForCommunityGuilds(HTTPException):
|
|
"""Cannot delete a channel required for Community guilds (Code: 50074)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotEditStickersWithinAMessage(HTTPException):
|
|
"""Cannot edit stickers within a message (Code: 50080)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidStickerSent(HTTPException):
|
|
"""Invalid sticker sent (Code: 50081)"""
|
|
|
|
pass
|
|
|
|
|
|
class TriedToPerformAnOperationOnAnArchivedThread(HTTPException):
|
|
"""Tried to perform an operation on an archived thread, such as editing a message or adding a user to the thread (Code: 50083)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidThreadNotificationSettings(HTTPException):
|
|
"""Invalid thread notification settings (Code: 50085)"""
|
|
|
|
pass
|
|
|
|
|
|
class BeforeValueIsEarlierThanTheThreadCreationDate(HTTPException):
|
|
"""before value is earlier than the thread creation date (Code: 50086)"""
|
|
|
|
pass
|
|
|
|
|
|
class CommunityServerChannelsMustBeTextChannels(HTTPException):
|
|
"""Community server channels must be text channels (Code: 50086)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheEntityTypeOfTheEventIsDifferentFromTheEntityYouAreTryingToStartTheEventFor(
|
|
HTTPException
|
|
):
|
|
"""The entity type of the event is different from the entity you are trying to start the event for (Code: 50091)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThisServerIsNotAvailableInYourLocation(HTTPException):
|
|
"""This server is not available in your location (Code: 50095)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThisServerNeedsMonetizationEnabledInOrderToPerformThisAction(HTTPException):
|
|
"""This server needs monetization enabled in order to perform this action (Code: 50097)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThisServerNeedsMoreBoostsToPerformThisAction(HTTPException):
|
|
"""This server needs more boosts to perform this action (Code: 50101)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheRequestBodyContainsInvalidJSON(HTTPException):
|
|
"""The request body contains invalid JSON. (Code: 50109)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheProvidedFileIsInvalid(HTTPException):
|
|
"""The provided file is invalid. (Code: 50110)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheProvidedFileTypeIsInvalid(HTTPException):
|
|
"""The provided file type is invalid. (Code: 50123)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheProvidedFileDurationExceedsMaximumOf52Seconds(HTTPException):
|
|
"""The provided file duration exceeds maximum of 5.2 seconds. (Code: 50124)"""
|
|
|
|
pass
|
|
|
|
|
|
class OwnerCannotBePendingMember(HTTPException):
|
|
"""Owner cannot be pending member (Code: 50131)"""
|
|
|
|
pass
|
|
|
|
|
|
class OwnershipCannotBeTransferredToABotUser(HTTPException):
|
|
"""Ownership cannot be transferred to a bot user (Code: 50132)"""
|
|
|
|
pass
|
|
|
|
|
|
class FailedToResizeAssetBelowTheMaximumSize(HTTPException):
|
|
"""Failed to resize asset below the maximum size: 262144 (Code: 50138)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotMixSubscriptionAndNonSubscriptionRolesForAnEmoji(HTTPException):
|
|
"""Cannot mix subscription and non subscription roles for an emoji (Code: 50144)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotConvertBetweenPremiumEmojiAndNormalEmoji(HTTPException):
|
|
"""Cannot convert between premium emoji and normal emoji (Code: 50145)"""
|
|
|
|
pass
|
|
|
|
|
|
class UploadedFileNotFound(HTTPException):
|
|
"""Uploaded file not found. (Code: 50146)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheSpecifiedEmojiIsInvalid(HTTPException):
|
|
"""The specified emoji is invalid (Code: 50151)"""
|
|
|
|
pass
|
|
|
|
|
|
class VoiceMessagesDoNotSupportAdditionalContent(HTTPException):
|
|
"""Voice messages do not support additional content. (Code: 50159)"""
|
|
|
|
pass
|
|
|
|
|
|
class VoiceMessagesMustHaveASingleAudioAttachment(HTTPException):
|
|
"""Voice messages must have a single audio attachment. (Code: 50160)"""
|
|
|
|
pass
|
|
|
|
|
|
class VoiceMessagesMustHaveSupportingMetadata(HTTPException):
|
|
"""Voice messages must have supporting metadata. (Code: 50161)"""
|
|
|
|
pass
|
|
|
|
|
|
class VoiceMessagesCannotBeEdited(HTTPException):
|
|
"""Voice messages cannot be edited. (Code: 50162)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotDeleteGuildSubscriptionIntegration(HTTPException):
|
|
"""Cannot delete guild subscription integration (Code: 50163)"""
|
|
|
|
pass
|
|
|
|
|
|
class YouCannotSendVoiceMessagesInThisChannel(HTTPException):
|
|
"""You cannot send voice messages in this channel. (Code: 50173)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheUserAccountMustFirstBeVerified(HTTPException):
|
|
"""The user account must first be verified (Code: 50178)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheProvidedFileDoesNotHaveAValidDuration(HTTPException):
|
|
"""The provided file does not have a valid duration. (Code: 50192)"""
|
|
|
|
pass
|
|
|
|
|
|
class YouDoNotHavePermissionToSendThisSticker(HTTPException):
|
|
"""You do not have permission to send this sticker. (Code: 50600)"""
|
|
|
|
pass
|
|
|
|
|
|
class TwoFactorIsRequiredForThisOperation(HTTPException):
|
|
"""Two factor is required for this operation (Code: 60003)"""
|
|
|
|
pass
|
|
|
|
|
|
class NoUsersWithDiscordTagExist(HTTPException):
|
|
"""No users with DiscordTag exist (Code: 80004)"""
|
|
|
|
pass
|
|
|
|
|
|
class ReactionWasBlocked(HTTPException):
|
|
"""Reaction was blocked (Code: 90001)"""
|
|
|
|
pass
|
|
|
|
|
|
class UserCannotUseBurstReactions(HTTPException):
|
|
"""User cannot use burst reactions (Code: 90002)"""
|
|
|
|
pass
|
|
|
|
|
|
class ApplicationNotYetAvailable(HTTPException):
|
|
"""Application not yet available. Try again later (Code: 110001)"""
|
|
|
|
pass
|
|
|
|
|
|
class APIResourceIsCurrentlyOverloaded(HTTPException):
|
|
"""API resource is currently overloaded. Try again a little later (Code: 130000)"""
|
|
|
|
pass
|
|
|
|
|
|
class TheStageIsAlreadyOpen(HTTPException):
|
|
"""The Stage is already open (Code: 150006)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotReplyWithoutPermissionToReadMessageHistory(HTTPException):
|
|
"""Cannot reply without permission to read message history (Code: 160002)"""
|
|
|
|
pass
|
|
|
|
|
|
class AThreadHasAlreadyBeenCreatedForThisMessage(HTTPException):
|
|
"""A thread has already been created for this message (Code: 160004)"""
|
|
|
|
pass
|
|
|
|
|
|
class ThreadIsLocked(HTTPException):
|
|
"""Thread is locked (Code: 160005)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfActiveThreadsReached(HTTPException):
|
|
"""Maximum number of active threads reached (Code: 160006)"""
|
|
|
|
pass
|
|
|
|
|
|
class MaximumNumberOfActiveAnnouncementThreadsReached(HTTPException):
|
|
"""Maximum number of active announcement threads reached (Code: 160007)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidJSONForUploadedLottieFile(HTTPException):
|
|
"""Invalid JSON for uploaded Lottie file (Code: 170001)"""
|
|
|
|
pass
|
|
|
|
|
|
class UploadedLottiesCannotContainRasterizedImages(HTTPException):
|
|
"""Uploaded Lotties cannot contain rasterized images such as PNG or JPEG (Code: 170002)"""
|
|
|
|
pass
|
|
|
|
|
|
class StickerMaximumFramerateExceeded(HTTPException):
|
|
"""Sticker maximum framerate exceeded (Code: 170003)"""
|
|
|
|
pass
|
|
|
|
|
|
class StickerFrameCountExceedsMaximumOf1000Frames(HTTPException):
|
|
"""Sticker frame count exceeds maximum of 1000 frames (Code: 170004)"""
|
|
|
|
pass
|
|
|
|
|
|
class LottieAnimationMaximumDimensionsExceeded(HTTPException):
|
|
"""Lottie animation maximum dimensions exceeded (Code: 170005)"""
|
|
|
|
pass
|
|
|
|
|
|
class StickerFrameRateIsEitherTooSmallOrTooLarge(HTTPException):
|
|
"""Sticker frame rate is either too small or too large (Code: 170006)"""
|
|
|
|
pass
|
|
|
|
|
|
class StickerAnimationDurationExceedsMaximumOf5Seconds(HTTPException):
|
|
"""Sticker animation duration exceeds maximum of 5 seconds (Code: 170007)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotUpdateAFinishedEvent(HTTPException):
|
|
"""Cannot update a finished event (Code: 180000)"""
|
|
|
|
pass
|
|
|
|
|
|
class FailedToCreateStageNeededForStageEvent(HTTPException):
|
|
"""Failed to create stage needed for stage event (Code: 180002)"""
|
|
|
|
pass
|
|
|
|
|
|
class MessageWasBlockedByAutomaticModeration(HTTPException):
|
|
"""Message was blocked by automatic moderation (Code: 200000)"""
|
|
|
|
pass
|
|
|
|
|
|
class TitleWasBlockedByAutomaticModeration(HTTPException):
|
|
"""Title was blocked by automatic moderation (Code: 200001)"""
|
|
|
|
pass
|
|
|
|
|
|
class WebhooksPostedToForumChannelsMustHaveAThreadNameOrThreadId(HTTPException):
|
|
"""Webhooks posted to forum channels must have a thread_name or thread_id (Code: 220001)"""
|
|
|
|
pass
|
|
|
|
|
|
class WebhooksPostedToForumChannelsCannotHaveBothAThreadNameAndThreadId(HTTPException):
|
|
"""Webhooks posted to forum channels cannot have both a thread_name and thread_id (Code: 220002)"""
|
|
|
|
pass
|
|
|
|
|
|
class WebhooksCanOnlyCreateThreadsInForumChannels(HTTPException):
|
|
"""Webhooks can only create threads in forum channels (Code: 220003)"""
|
|
|
|
pass
|
|
|
|
|
|
class WebhookServicesCannotBeUsedInForumChannels(HTTPException):
|
|
"""Webhook services cannot be used in forum channels (Code: 220004)"""
|
|
|
|
pass
|
|
|
|
|
|
class MessageBlockedByHarmfulLinksFilter(HTTPException):
|
|
"""Message blocked by harmful links filter (Code: 240000)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotEnableOnboardingRequirementsAreNotMet(HTTPException):
|
|
"""Cannot enable onboarding, requirements are not met (Code: 350000)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotUpdateOnboardingWhileBelowRequirements(HTTPException):
|
|
"""Cannot update onboarding while below requirements (Code: 350001)"""
|
|
|
|
pass
|
|
|
|
|
|
class FailedToBanUsers(HTTPException):
|
|
"""Failed to ban users (Code: 500000)"""
|
|
|
|
pass
|
|
|
|
|
|
class PollVotingBlocked(HTTPException):
|
|
"""Poll voting blocked (Code: 520000)"""
|
|
|
|
pass
|
|
|
|
|
|
class PollExpired(HTTPException):
|
|
"""Poll expired (Code: 520001)"""
|
|
|
|
pass
|
|
|
|
|
|
class InvalidChannelTypeForPollCreation(HTTPException):
|
|
"""Invalid channel type for poll creation (Code: 520002)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotEditAPollMessage(HTTPException):
|
|
"""Cannot edit a poll message (Code: 520003)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotUseAnEmojiIncludedWithThePoll(HTTPException):
|
|
"""Cannot use an emoji included with the poll (Code: 520004)"""
|
|
|
|
pass
|
|
|
|
|
|
class CannotExpireANonPollMessage(HTTPException):
|
|
"""Cannot expire a non-poll message (Code: 520006)"""
|
|
|
|
pass
|
|
|
|
|
|
class AppCommandError(DisagreementException):
|
|
"""Base exception for application command related errors."""
|
|
|
|
pass
|
|
|
|
|
|
class AppCommandOptionConversionError(AppCommandError):
|
|
"""Exception raised when an application command option fails to convert."""
|
|
|
|
def __init__(
|
|
self,
|
|
message: str,
|
|
option_name: Optional[str] = None,
|
|
original_value: Any = None,
|
|
):
|
|
self.option_name = option_name
|
|
self.original_value = original_value
|
|
full_message = message
|
|
if option_name:
|
|
full_message = f"Failed to convert option '{option_name}': {message}"
|
|
if original_value is not None:
|
|
full_message += f" (Original value: '{original_value}')"
|
|
super().__init__(full_message)
|