Models
Pydantic models for parsing Discord's interaction payloads and the context available to command handlers.
Enumerations
fastapi_interactions.models.InteractionType
Bases: IntEnum
Source code in fastapi_interactions/models.py
| class InteractionType(IntEnum):
PING = 1
APPLICATION_COMMAND = 2
MESSAGE_COMPONENT = 3
APPLICATION_COMMAND_AUTOCOMPLETE = 4
MODAL_SUBMIT = 5
|
fastapi_interactions.models.CommandType
Bases: IntEnum
Source code in fastapi_interactions/models.py
| class CommandType(IntEnum):
CHAT_INPUT = 1
USER = 2
MESSAGE = 3
PRIMARY_ENTRY_POINT = 4
CHAT = 1
ENTRY = 4
|
fastapi_interactions.models.InteractionCallbackType
Bases: IntEnum
Source code in fastapi_interactions/models.py
| class InteractionCallbackType(IntEnum):
PONG = 1
CHANNEL_MESSAGE_WITH_SOURCE = 4
DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE = 5
DEFERRED_UPDATE_MESSAGE = 6
UPDATE_MESSAGE = 7
APPLICATION_COMMAND_AUTOCOMPLETE_RESULT = 8
MODAL = 9
PREMIUM_REQUIRED = 10
LAUNCH_ACTIVITY = 12
MESSAGE = CHANNEL_MESSAGE_WITH_SOURCE
DEFER = DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE
UPDATE = UPDATE_MESSAGE
AUTOCOMPLETE = APPLICATION_COMMAND_AUTOCOMPLETE_RESULT
|
fastapi_interactions.models.ApplicationCommandOptionType
Bases: IntEnum
Source code in fastapi_interactions/models.py
| class ApplicationCommandOptionType(IntEnum):
SUB_COMMAND = 1
SUB_COMMAND_GROUP = 2
STRING = 3
INTEGER = 4
BOOLEAN = 5
USER = 6
CHANNEL = 7
ROLE = 8
MENTIONABLE = 9
NUMBER = 10
ATTACHMENT = 11
|
fastapi_interactions.models.MessageFlags
Bases: IntFlag
Bit flags describing special message properties.
Source code in fastapi_interactions/models.py
| class MessageFlags(IntFlag):
"""Bit flags describing special message properties."""
CROSSPOSTED = 1 << 0
IS_CROSSPOST = 1 << 1
SUPPRESS_EMBEDS = 1 << 2
SOURCE_MESSAGE_DELETED = 1 << 3
URGENT = 1 << 4
HAS_THREAD = 1 << 5
EPHEMERAL = 1 << 6
LOADING = 1 << 7
FAILED_TO_MENTION_SOME_ROLES_IN_THREAD = 1 << 8
SUPPRESS_NOTIFICATIONS = 1 << 12
IS_VOICE_MESSAGE = 1 << 13
HAS_SNAPSHOT = 1 << 14
IS_COMPONENTS_V2 = 1 << 15
|
Response types
fastapi_interactions.models.InteractionCallbackType
Bases: IntEnum
Source code in fastapi_interactions/models.py
| class InteractionCallbackType(IntEnum):
PONG = 1
CHANNEL_MESSAGE_WITH_SOURCE = 4
DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE = 5
DEFERRED_UPDATE_MESSAGE = 6
UPDATE_MESSAGE = 7
APPLICATION_COMMAND_AUTOCOMPLETE_RESULT = 8
MODAL = 9
PREMIUM_REQUIRED = 10
LAUNCH_ACTIVITY = 12
MESSAGE = CHANNEL_MESSAGE_WITH_SOURCE
DEFER = DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE
UPDATE = UPDATE_MESSAGE
AUTOCOMPLETE = APPLICATION_COMMAND_AUTOCOMPLETE_RESULT
|
Option and message types
fastapi_interactions.models.ApplicationCommandOptionType
Bases: IntEnum
Source code in fastapi_interactions/models.py
| class ApplicationCommandOptionType(IntEnum):
SUB_COMMAND = 1
SUB_COMMAND_GROUP = 2
STRING = 3
INTEGER = 4
BOOLEAN = 5
USER = 6
CHANNEL = 7
ROLE = 8
MENTIONABLE = 9
NUMBER = 10
ATTACHMENT = 11
|
fastapi_interactions.models.MessageFlags
Bases: IntFlag
Bit flags describing special message properties.
Source code in fastapi_interactions/models.py
| class MessageFlags(IntFlag):
"""Bit flags describing special message properties."""
CROSSPOSTED = 1 << 0
IS_CROSSPOST = 1 << 1
SUPPRESS_EMBEDS = 1 << 2
SOURCE_MESSAGE_DELETED = 1 << 3
URGENT = 1 << 4
HAS_THREAD = 1 << 5
EPHEMERAL = 1 << 6
LOADING = 1 << 7
FAILED_TO_MENTION_SOME_ROLES_IN_THREAD = 1 << 8
SUPPRESS_NOTIFICATIONS = 1 << 12
IS_VOICE_MESSAGE = 1 << 13
HAS_SNAPSHOT = 1 << 14
IS_COMPONENTS_V2 = 1 << 15
|
User and member data
fastapi_interactions.models.User
Bases: DiscordModel
Source code in fastapi_interactions/models.py
| class User(DiscordModel):
id: Snowflake
username: str
descriminator: Optional[str] = None
global_name: Optional[str] = None
avatar: Optional[str] = None
bot: Optional[bool] = None
|
fastapi_interactions.models.Member
Bases: DiscordModel
Source code in fastapi_interactions/models.py
| class Member(DiscordModel):
user: Optional[User] = None
nick: Optional[str] = None
roles: list[Snowflake] = Field(default_factory=list)
permissions: Optional[str] = None
|
Interactions
fastapi_interactions.models.Interaction
Bases: DiscordModel
Source code in fastapi_interactions/models.py
| class Interaction(DiscordModel):
id: Snowflake
application_id: Snowflake
type: InteractionType
token: str
version: int
data: Optional[dict[str, Any]] = None
guild_id: Optional[Snowflake] = None
channel_id: Optional[Snowflake] = None
member: Optional[Member] = None
user: Optional[User] = None
locale: Optional[str] = None
guild_locale: Optional[str] = None
|
Command options and data
fastapi_interactions.models.ApplicationCommandInteractionOption
Bases: DiscordModel
Source code in fastapi_interactions/models.py
| class ApplicationCommandInteractionOption(DiscordModel):
name: str
type: ApplicationCommandOptionType
value: Optional[str | int | float | bool] = None
options: list["ApplicationCommandInteractionOption"] = Field(default_factory=list)
focused: Optional[bool] = None
@property
def options_by_name(self) -> dict[str, "ApplicationCommandInteractionOption"]:
return {opt.name for opt in self.options}
def get_option_value(self, name: str, default: Any = None) -> Any:
option = self.options_by_name.get(name)
return option.value if option is not None else default
|
fastapi_interactions.models.ApplicationCommandData
Bases: DiscordModel
Source code in fastapi_interactions/models.py
| class ApplicationCommandData(DiscordModel):
id: Snowflake
name: str
type: CommandType
guild_id: Optional[Snowflake] = None
target_id: Optional[Snowflake] = None
options: list[ApplicationCommandInteractionOption] = Field(default_factory=list)
@property
def options_by_name(self) -> dict[str, "ApplicationCommandInteractionOption"]:
return {opt.name: opt for opt in self.options}
def get_option_value(self, name: str, default: Any = None) -> Any:
option = self.options_by_name.get(name)
return option.value if option is not None else default
|