Skip to content

Messages and interactions

The models guide explains how models are typed and decoded. Every class here is importable from bostie.

bostie.models.base.Model

Bases: Struct

Base of the models bostie decodes.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

bostie.models.message

DEFAULT_ALLOWED_MENTIONS module-attribute

DEFAULT_ALLOWED_MENTIONS = AllowedMentions(parse=('users', 'roles'))

MentionType

MentionType = Literal['roles', 'users', 'everyone']

Attachment

Bases: Model, Snowflake

A file attached to a message or passed as a command option.

id instance-attribute

id: int

filename instance-attribute

filename: str

title class-attribute instance-attribute

title: str | None = None

description class-attribute instance-attribute

description: str | None = None

content_type class-attribute instance-attribute

content_type: str | None = None

size instance-attribute

size: int

url instance-attribute

url: str

proxy_url instance-attribute

proxy_url: str

height class-attribute instance-attribute

height: int | None = None

width class-attribute instance-attribute

width: int | None = None

placeholder class-attribute instance-attribute

placeholder: str | None = None

placeholder_version class-attribute instance-attribute

placeholder_version: int | None = None

ephemeral class-attribute instance-attribute

ephemeral: bool = False

duration_secs class-attribute instance-attribute

duration_secs: float | None = None

waveform class-attribute instance-attribute

waveform: bytes | None = None

flags class-attribute instance-attribute

clip_participants class-attribute instance-attribute

clip_participants: tuple[User, ...] = ()

clip_created_at class-attribute instance-attribute

clip_created_at: datetime | None = None

application class-attribute instance-attribute

application: PartialApplication | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

Resolved

Bases: Model

The users, members, roles, channels, messages and files mentioned by id.

users class-attribute instance-attribute

users: dict[int, User] = {}

members class-attribute instance-attribute

members: dict[int, PartialMember] = {}

roles class-attribute instance-attribute

roles: dict[int, Role] = {}

channels class-attribute instance-attribute

channels: dict[int, PartialChannel] = {}

attachments class-attribute instance-attribute

attachments: dict[int, Attachment] = {}

messages property

messages: dict[int, PartialMessage]

The messages by id, decoded on each access.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

member

member(id: int) -> ResolvedMember | None

The member with this id, with its user.

message

message(id: int) -> Message | WebhookMessage | None

The whole message with this id, as a message command's target carries it.

EmbedField

Bases: Builder

name instance-attribute

name: str

value instance-attribute

value: str

inline class-attribute instance-attribute

inline: bool | None = None

EmbedFooter

Bases: Builder

text instance-attribute

text: str

icon_url class-attribute instance-attribute

icon_url: str | None = None

proxy_icon_url class-attribute instance-attribute

proxy_icon_url: str | None = None

EmbedAuthor

Bases: Builder

name instance-attribute

name: str

url class-attribute instance-attribute

url: str | None = None

icon_url class-attribute instance-attribute

icon_url: str | None = None

proxy_icon_url class-attribute instance-attribute

proxy_icon_url: str | None = None

EmbedMedia

Bases: Builder

An embed image, thumbnail or video.

url class-attribute instance-attribute

url: str | None = None

proxy_url class-attribute instance-attribute

proxy_url: str | None = None

height class-attribute instance-attribute

height: int | None = None

width class-attribute instance-attribute

width: int | None = None

content_type class-attribute instance-attribute

content_type: str | None = None

placeholder class-attribute instance-attribute

placeholder: str | None = None

placeholder_version class-attribute instance-attribute

placeholder_version: int | None = None

description class-attribute instance-attribute

description: str | None = None

flags class-attribute instance-attribute

flags: EmbedMediaFlags | None = None

EmbedProvider

Bases: Builder

name class-attribute instance-attribute

name: str | None = None

url class-attribute instance-attribute

url: str | None = None

Embed

Bases: Builder

A rich embed, as received in messages or built to send one.

title class-attribute instance-attribute

title: str | None = None

type class-attribute instance-attribute

type: EmbedType | None = None

description class-attribute instance-attribute

description: str | None = None

url class-attribute instance-attribute

url: str | None = None

timestamp class-attribute instance-attribute

timestamp: datetime | None = None

color class-attribute instance-attribute

color: int | None = None

footer class-attribute instance-attribute

footer: EmbedFooter | None = None

image class-attribute instance-attribute

image: EmbedMedia | None = None

thumbnail class-attribute instance-attribute

thumbnail: EmbedMedia | None = None

video class-attribute instance-attribute

video: EmbedMedia | None = None

provider class-attribute instance-attribute

provider: EmbedProvider | None = None

author class-attribute instance-attribute

author: EmbedAuthor | None = None

fields class-attribute instance-attribute

fields: tuple[EmbedField, ...] = ()

flags class-attribute instance-attribute

flags: EmbedFlags | None = None

components property

components: tuple[Component, ...]

The components of a link preview built from components.

ReactionCountDetails

Bases: Model

The reactions of one emoji, split into super reactions and normal ones.

burst instance-attribute

burst: int

normal instance-attribute

normal: int

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

Reaction

Bases: Model

An emoji's reactions on a message; count includes super reactions.

count instance-attribute

count: int

count_details instance-attribute

count_details: ReactionCountDetails

me instance-attribute

me: bool

me_burst instance-attribute

me_burst: bool

emoji instance-attribute

emoji: PartialEmoji

burst_colors instance-attribute

burst_colors: tuple[str, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

MessageReference

Bases: Builder

type class-attribute instance-attribute

type: MessageReferenceType | None = None

message_id class-attribute instance-attribute

message_id: int | None = None

channel_id class-attribute instance-attribute

channel_id: int | None = None

guild_id class-attribute instance-attribute

guild_id: int | None = None

fail_if_not_exists class-attribute instance-attribute

fail_if_not_exists: bool | None = None

StickerItem

Bases: Model, Snowflake

id instance-attribute

id: int

name instance-attribute

name: str

format_type instance-attribute

format_type: StickerFormatType

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

PollMedia

Bases: Builder

The text of a poll question or answer, and the emoji of an answer.

text class-attribute instance-attribute

text: str | None = None

emoji class-attribute instance-attribute

emoji: PartialEmoji | None = None

PollAnswer

Bases: Builder

A poll answer; Discord numbers answer_id itself.

answer_id class-attribute instance-attribute

answer_id: int | None = None

poll_media instance-attribute

poll_media: PollMedia

PollAnswerCount

Bases: Model

The votes of the answer whose answer_id is id.

id instance-attribute

id: int

count instance-attribute

count: int

me_voted instance-attribute

me_voted: bool

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

PollResults

Bases: Model

The votes per answer; an answer missing from answer_counts has none.

is_finalized instance-attribute

is_finalized: bool

answer_counts instance-attribute

answer_counts: tuple[PollAnswerCount, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

Poll

Bases: Model

A poll on a message; results is None when Discord did not count them.

question instance-attribute

question: PollMedia

answers instance-attribute

answers: tuple[PollAnswer, ...]

expiry instance-attribute

expiry: datetime | None

allow_multiselect instance-attribute

allow_multiselect: bool

layout_type instance-attribute

layout_type: PollLayoutType

results class-attribute instance-attribute

results: PollResults | None = None

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

PollCreateRequest

Bases: Builder

A poll to send; it stays open duration hours, 24 when not given.

question instance-attribute

question: PollMedia

answers instance-attribute

answers: tuple[PollAnswer, ...]

duration class-attribute instance-attribute

duration: int | None = None

allow_multiselect class-attribute instance-attribute

allow_multiselect: bool | None = None

layout_type class-attribute instance-attribute

layout_type: PollLayoutType | None = None

SharedClientTheme

Bases: Builder

A client theme shared in a message; colors are hex strings.

colors instance-attribute

colors: tuple[str, ...]

gradient_angle instance-attribute

gradient_angle: int

base_mix instance-attribute

base_mix: int

base_theme class-attribute instance-attribute

base_theme: BaseTheme | None = None

AllowedMentions

Bases: Builder

Which mentions in a message may notify; parse=() silences all of them.

Sent with a bot that has a default, it changes only the kinds of mention it sets.

parse class-attribute instance-attribute

parse: tuple[MentionType, ...] | None = None

roles class-attribute instance-attribute

roles: tuple[int, ...] | None = None

users class-attribute instance-attribute

users: tuple[int, ...] | None = None

replied_user class-attribute instance-attribute

replied_user: bool | None = None

MessageActivity

Bases: Model

The Rich Presence invite a message carries.

type instance-attribute

party_id class-attribute instance-attribute

party_id: str | None = None

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

MessageApplication

Bases: PartialApplication

The app behind the Rich Presence invite a message carries.

name instance-attribute

name: str

icon class-attribute instance-attribute

icon: str | None = None

description class-attribute instance-attribute

description: str | None = None

cover_image class-attribute instance-attribute

cover_image: str | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

flags property

ChannelMention

Bases: Model, Snowflake

A channel mentioned in a crossposted message.

id instance-attribute

id: int

guild_id instance-attribute

guild_id: int

type instance-attribute

name instance-attribute

name: str

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

RoleSubscriptionData

Bases: Model

The role subscription purchase or renewal a message announces.

role_subscription_listing_id instance-attribute

role_subscription_listing_id: int

tier_name instance-attribute

tier_name: str

total_months_subscribed instance-attribute

total_months_subscribed: int

is_renewal instance-attribute

is_renewal: bool

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

MessageCall

Bases: Model

The call in a private channel a message announces.

participants instance-attribute

participants: tuple[int, ...]

ended_timestamp class-attribute instance-attribute

ended_timestamp: datetime | None = None

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

InteractionMetadata

Bases: Model, Snowflake

The interaction a message answers; its type picks the subclass.

id instance-attribute

id: int

type instance-attribute

user instance-attribute

user: User

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

original_response_message_id class-attribute instance-attribute

original_response_message_id: int | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

CommandInteractionMetadata

Bases: InteractionMetadata

A command run; the target is set for user and message commands.

target_user class-attribute instance-attribute

target_user: User | None = None

target_message_id class-attribute instance-attribute

target_message_id: int | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

type instance-attribute

user instance-attribute

user: User

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

original_response_message_id class-attribute instance-attribute

original_response_message_id: int | None = None

ComponentInteractionMetadata

Bases: InteractionMetadata

interacted_message_id instance-attribute

interacted_message_id: int

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

type instance-attribute

user instance-attribute

user: User

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

original_response_message_id class-attribute instance-attribute

original_response_message_id: int | None = None

ModalInteractionMetadata

Bases: InteractionMetadata

triggering_interaction_metadata property

triggering_interaction_metadata: InteractionMetadata

The command or component that opened the modal, decoded on each access.

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

type instance-attribute

user instance-attribute

user: User

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

original_response_message_id class-attribute instance-attribute

original_response_message_id: int | None = None

MentionedUser

Bases: User

A user a message mentions, with their member when it was sent in a guild.

member class-attribute instance-attribute

member: PartialMember | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

username instance-attribute

username: str

avatar instance-attribute

avatar: str | None

bot class-attribute instance-attribute

bot: bool = False

mention property

mention: str

display_name property

display_name: str

discriminator instance-attribute

discriminator: str

global_name instance-attribute

global_name: str | None

system class-attribute instance-attribute

system: bool = False

banner class-attribute instance-attribute

banner: str | None = None

accent_color class-attribute instance-attribute

accent_color: int | None = None

public_flags class-attribute instance-attribute

public_flags: UserFlags = UserFlags(0)

avatar_decoration_data class-attribute instance-attribute

avatar_decoration_data: AvatarDecorationData | None = None

collectibles class-attribute instance-attribute

collectibles: Collectibles | None = None

primary_guild class-attribute instance-attribute

primary_guild: PrimaryGuild | None = None

display_name_styles class-attribute instance-attribute

display_name_styles: DisplayNameStyles | None = None

SnapshotMessage

Bases: Model

The fields of a forwarded message that its snapshot keeps.

type instance-attribute

content instance-attribute

content: str

embeds instance-attribute

embeds: tuple[Embed, ...]

attachments instance-attribute

attachments: tuple[Attachment, ...]

timestamp instance-attribute

timestamp: datetime

edited_timestamp instance-attribute

edited_timestamp: datetime | None

flags class-attribute instance-attribute

mentions instance-attribute

mentions: tuple[MentionedUser, ...]

mention_roles instance-attribute

mention_roles: tuple[int, ...]

sticker_items class-attribute instance-attribute

sticker_items: tuple[StickerItem, ...] = ()

components property

components: tuple[Component, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

MessageSnapshot

Bases: Model

A forwarded message, as it was when it was forwarded.

message instance-attribute

message: SnapshotMessage

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

PartialMessage

Bases: Model, Snowflake

A message as an interaction resolves it, with only some of its fields.

id instance-attribute

id: int

channel_id instance-attribute

channel_id: int

guild_id class-attribute instance-attribute

guild_id: int | None = None

member class-attribute instance-attribute

member: PartialMember | None = None

channel_type class-attribute instance-attribute

channel_type: ChannelType | None = None

reactions class-attribute instance-attribute

reactions: tuple[Reaction, ...] = ()

nonce class-attribute instance-attribute

nonce: int | str | None = None

webhook_id class-attribute instance-attribute

webhook_id: int | None = None

flags class-attribute instance-attribute

message_reference class-attribute instance-attribute

message_reference: MessageReference | None = None

thread class-attribute instance-attribute

thread: Channel | None = None

sticker_items class-attribute instance-attribute

sticker_items: tuple[StickerItem, ...] = ()

position class-attribute instance-attribute

position: int | None = None

components property

components: tuple[Component, ...]

referenced_message property

referenced_message: Message | WebhookMessage | None

The message this one replies to, decoded on each access.

jump_url property

jump_url: str

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

Message

Bases: _Message

A message in a channel, sent by a user or a bot.

author instance-attribute

author: User

author_member property

author_member: ResolvedMember | None

The author as a guild member, when the message carries its member.

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

channel_id instance-attribute

channel_id: int

guild_id class-attribute instance-attribute

guild_id: int | None = None

member class-attribute instance-attribute

member: PartialMember | None = None

channel_type class-attribute instance-attribute

channel_type: ChannelType | None = None

reactions class-attribute instance-attribute

reactions: tuple[Reaction, ...] = ()

nonce class-attribute instance-attribute

nonce: int | str | None = None

webhook_id class-attribute instance-attribute

webhook_id: int | None = None

flags class-attribute instance-attribute

message_reference class-attribute instance-attribute

message_reference: MessageReference | None = None

thread class-attribute instance-attribute

thread: Channel | None = None

sticker_items class-attribute instance-attribute

sticker_items: tuple[StickerItem, ...] = ()

position class-attribute instance-attribute

position: int | None = None

components property

components: tuple[Component, ...]

referenced_message property

referenced_message: Message | WebhookMessage | None

The message this one replies to, decoded on each access.

jump_url property

jump_url: str

content instance-attribute

content: str

timestamp instance-attribute

timestamp: datetime

edited_timestamp instance-attribute

edited_timestamp: datetime | None

tts instance-attribute

tts: bool

mention_everyone instance-attribute

mention_everyone: bool

mentions instance-attribute

mentions: tuple[MentionedUser, ...]

mention_roles instance-attribute

mention_roles: tuple[int, ...]

attachments instance-attribute

attachments: tuple[Attachment, ...]

embeds instance-attribute

embeds: tuple[Embed, ...]

pinned instance-attribute

pinned: bool

type instance-attribute

poll class-attribute instance-attribute

poll: Poll | None = None

shared_client_theme class-attribute instance-attribute

shared_client_theme: SharedClientTheme | None = None

mention_channels class-attribute instance-attribute

mention_channels: tuple[ChannelMention, ...] = ()

activity class-attribute instance-attribute

activity: MessageActivity | None = None

application class-attribute instance-attribute

application: MessageApplication | None = None

application_id class-attribute instance-attribute

application_id: int | None = None

message_snapshots class-attribute instance-attribute

message_snapshots: tuple[MessageSnapshot, ...] = ()

role_subscription_data class-attribute instance-attribute

role_subscription_data: RoleSubscriptionData | None = None

resolved class-attribute instance-attribute

resolved: Resolved | None = None

call class-attribute instance-attribute

call: MessageCall | None = None

interaction_metadata property

interaction_metadata: InteractionMetadata | None

The interaction this message answers, decoded on each access.

WebhookMessage

Bases: _Message

A message a webhook sent, interaction responses included.

author instance-attribute

author: PartialUser

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

channel_id instance-attribute

channel_id: int

guild_id class-attribute instance-attribute

guild_id: int | None = None

member class-attribute instance-attribute

member: PartialMember | None = None

channel_type class-attribute instance-attribute

channel_type: ChannelType | None = None

reactions class-attribute instance-attribute

reactions: tuple[Reaction, ...] = ()

nonce class-attribute instance-attribute

nonce: int | str | None = None

webhook_id class-attribute instance-attribute

webhook_id: int | None = None

flags class-attribute instance-attribute

message_reference class-attribute instance-attribute

message_reference: MessageReference | None = None

thread class-attribute instance-attribute

thread: Channel | None = None

sticker_items class-attribute instance-attribute

sticker_items: tuple[StickerItem, ...] = ()

position class-attribute instance-attribute

position: int | None = None

components property

components: tuple[Component, ...]

referenced_message property

referenced_message: Message | WebhookMessage | None

The message this one replies to, decoded on each access.

jump_url property

jump_url: str

content instance-attribute

content: str

timestamp instance-attribute

timestamp: datetime

edited_timestamp instance-attribute

edited_timestamp: datetime | None

tts instance-attribute

tts: bool

mention_everyone instance-attribute

mention_everyone: bool

mentions instance-attribute

mentions: tuple[MentionedUser, ...]

mention_roles instance-attribute

mention_roles: tuple[int, ...]

attachments instance-attribute

attachments: tuple[Attachment, ...]

embeds instance-attribute

embeds: tuple[Embed, ...]

pinned instance-attribute

pinned: bool

type instance-attribute

poll class-attribute instance-attribute

poll: Poll | None = None

shared_client_theme class-attribute instance-attribute

shared_client_theme: SharedClientTheme | None = None

mention_channels class-attribute instance-attribute

mention_channels: tuple[ChannelMention, ...] = ()

activity class-attribute instance-attribute

activity: MessageActivity | None = None

application class-attribute instance-attribute

application: MessageApplication | None = None

application_id class-attribute instance-attribute

application_id: int | None = None

message_snapshots class-attribute instance-attribute

message_snapshots: tuple[MessageSnapshot, ...] = ()

role_subscription_data class-attribute instance-attribute

role_subscription_data: RoleSubscriptionData | None = None

resolved class-attribute instance-attribute

resolved: Resolved | None = None

call class-attribute instance-attribute

call: MessageCall | None = None

interaction_metadata property

interaction_metadata: InteractionMetadata | None

The interaction this message answers, decoded on each access.

MessagePin

Bases: Model

A pinned message and when it was pinned.

pinned_at instance-attribute

pinned_at: datetime

message instance-attribute

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

MessageSearchResults

Bases: Model

One page of a guild message search, with the threads its messages are in.

doing_deep_historical_index instance-attribute

doing_deep_historical_index: bool

documents_indexed class-attribute instance-attribute

documents_indexed: int | None = None

total_results instance-attribute

total_results: int

messages instance-attribute

messages: tuple[Message | WebhookMessage, ...]

threads class-attribute instance-attribute

threads: tuple[Channel, ...] = ()

members class-attribute instance-attribute

members: tuple[ThreadMember, ...] = ()

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

MessageParts

Bases: TypedDict

The parts of a message to send; a part not given is left out.

embeds instance-attribute

embeds: Sequence[Embed | Mapping[str, Any]]

components instance-attribute

components: Sequence[Component | Mapping[str, Any]]

files instance-attribute

files: Sequence[File]

allowed_mentions instance-attribute

allowed_mentions: AllowedMentions

flags instance-attribute

flags: MessageFlags

tts instance-attribute

tts: bool

poll instance-attribute

EditParts

Bases: TypedDict

The parts of a message to edit: a part not given stays and None clears it.

With files or attachments, only the listed attachments stay.

content instance-attribute

content: str | None

embeds instance-attribute

embeds: Sequence[Embed | Mapping[str, Any]] | None

components instance-attribute

components: Sequence[Component | Mapping[str, Any]] | None

files instance-attribute

files: Sequence[File]

allowed_mentions instance-attribute

allowed_mentions: AllowedMentions | None

flags instance-attribute

flags: MessageFlags | None

attachments instance-attribute

attachments: Sequence[Attachment | int] | None

decode_message

decode_message(data: bytes) -> Message | WebhookMessage

Decode a message into Message, or WebhookMessage when a webhook sent it.

build_message

build_message(content: str | None = None, *, reply_to: int | None = None, **parts: Unpack[MessageParts]) -> tuple[dict[str, Any], Sequence[File]]

Build the JSON body of a message to send; only given parts are set.

V2 components set IS_COMPONENTS_V2 and clear content and embeds.

bostie.models.components

AnyEmoji

AnyEmoji = str | PartialEmoji | Emoji

SelectDefaultType

SelectDefaultType = Literal['user', 'role', 'channel']

Component

SubmittedComponent

SubmittedComponent = KnownSubmitted | UnknownComponent

PartialEmoji

Bases: Builder, MaybeSnowflake

A custom emoji by id, or a unicode emoji by name.

id class-attribute instance-attribute

id: int | None = None

name class-attribute instance-attribute

name: str | None = None

animated class-attribute instance-attribute

animated: bool | None = None

created_at property

created_at: datetime | None

When the object was created, in UTC, or None without an id.

parse classmethod

parse(text: str) -> Self

Custom emoji from <:name:id>, <a:name:id> or name:id, else unicode.

ActionRow

Bases: _Component

components property

components: tuple[Component, ...]

id class-attribute instance-attribute

id: int | None = None

type property

Button

Bases: _Component

style instance-attribute

style: ButtonStyle

label class-attribute instance-attribute

label: str | None = None

emoji class-attribute instance-attribute

emoji: PartialEmoji | None = None

custom_id class-attribute instance-attribute

custom_id: str | None = None

sku_id class-attribute instance-attribute

sku_id: int | None = None

url class-attribute instance-attribute

url: str | None = None

disabled class-attribute instance-attribute

disabled: bool | None = None

id class-attribute instance-attribute

id: int | None = None

type property

SelectOption

Bases: Builder

label instance-attribute

label: str

value instance-attribute

value: str

description class-attribute instance-attribute

description: str | None = None

emoji class-attribute instance-attribute

emoji: PartialEmoji | None = None

default class-attribute instance-attribute

default: bool | None = None

SelectDefaultValue

Bases: Builder, Snowflake

A user, role or channel a select shows as already chosen.

id instance-attribute

id: int

type instance-attribute

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

StringSelect

Bases: _Select

options instance-attribute

options: tuple[SelectOption, ...]

id class-attribute instance-attribute

id: int | None = None

type property

custom_id instance-attribute

custom_id: str

placeholder class-attribute instance-attribute

placeholder: str | None = None

min_values class-attribute instance-attribute

min_values: int | None = None

max_values class-attribute instance-attribute

max_values: int | None = None

disabled class-attribute instance-attribute

disabled: bool | None = None

UserSelect

Bases: _EntitySelect

id class-attribute instance-attribute

id: int | None = None

type property

custom_id instance-attribute

custom_id: str

placeholder class-attribute instance-attribute

placeholder: str | None = None

min_values class-attribute instance-attribute

min_values: int | None = None

max_values class-attribute instance-attribute

max_values: int | None = None

disabled class-attribute instance-attribute

disabled: bool | None = None

default_values class-attribute instance-attribute

default_values: tuple[SelectDefaultValue, ...] = ()

RoleSelect

Bases: _EntitySelect

id class-attribute instance-attribute

id: int | None = None

type property

custom_id instance-attribute

custom_id: str

placeholder class-attribute instance-attribute

placeholder: str | None = None

min_values class-attribute instance-attribute

min_values: int | None = None

max_values class-attribute instance-attribute

max_values: int | None = None

disabled class-attribute instance-attribute

disabled: bool | None = None

default_values class-attribute instance-attribute

default_values: tuple[SelectDefaultValue, ...] = ()

MentionableSelect

Bases: _EntitySelect

id class-attribute instance-attribute

id: int | None = None

type property

custom_id instance-attribute

custom_id: str

placeholder class-attribute instance-attribute

placeholder: str | None = None

min_values class-attribute instance-attribute

min_values: int | None = None

max_values class-attribute instance-attribute

max_values: int | None = None

disabled class-attribute instance-attribute

disabled: bool | None = None

default_values class-attribute instance-attribute

default_values: tuple[SelectDefaultValue, ...] = ()

ChannelSelect

Bases: _EntitySelect

channel_types class-attribute instance-attribute

channel_types: tuple[ChannelType, ...] = ()

id class-attribute instance-attribute

id: int | None = None

type property

custom_id instance-attribute

custom_id: str

placeholder class-attribute instance-attribute

placeholder: str | None = None

min_values class-attribute instance-attribute

min_values: int | None = None

max_values class-attribute instance-attribute

max_values: int | None = None

disabled class-attribute instance-attribute

disabled: bool | None = None

default_values class-attribute instance-attribute

default_values: tuple[SelectDefaultValue, ...] = ()

ContentScanMetadata

Bases: Builder

What Discord's content scan found in a media item.

flags instance-attribute

UnfurledMediaItem

Bases: Builder

An image, video or file shown by a component; only url is set when sending.

url instance-attribute

url: str

proxy_url class-attribute instance-attribute

proxy_url: str | None = None

height class-attribute instance-attribute

height: int | None = None

width class-attribute instance-attribute

width: int | None = None

placeholder class-attribute instance-attribute

placeholder: str | None = None

placeholder_version class-attribute instance-attribute

placeholder_version: int | None = None

content_type class-attribute instance-attribute

content_type: str | None = None

flags class-attribute instance-attribute

flags: UnfurledMediaItemFlags | None = None

content_scan_metadata class-attribute instance-attribute

content_scan_metadata: ContentScanMetadata | None = None

attachment_id class-attribute instance-attribute

attachment_id: int | None = None

Section

Bases: _Component

Text components with a button or thumbnail beside them.

components property

components: tuple[Component, ...]

accessory property

accessory: Component

id class-attribute instance-attribute

id: int | None = None

type property

TextDisplay

Bases: _Component

content instance-attribute

content: str

id class-attribute instance-attribute

id: int | None = None

type property

Thumbnail

Bases: _Component

media instance-attribute

description class-attribute instance-attribute

description: str | None = None

spoiler class-attribute instance-attribute

spoiler: bool | None = None

id class-attribute instance-attribute

id: int | None = None

type property

MediaGalleryItem

Bases: Builder

media instance-attribute

description class-attribute instance-attribute

description: str | None = None

spoiler class-attribute instance-attribute

spoiler: bool | None = None

MediaGallery

Bases: _Component

items instance-attribute

items: tuple[MediaGalleryItem, ...]

id class-attribute instance-attribute

id: int | None = None

type property

FileComponent

Bases: _Component

A file attached to the message, shown in its place among the components.

file instance-attribute

spoiler class-attribute instance-attribute

spoiler: bool | None = None

name class-attribute instance-attribute

name: str | None = None

size class-attribute instance-attribute

size: int | None = None

id class-attribute instance-attribute

id: int | None = None

type property

Separator

Bases: _Component

divider class-attribute instance-attribute

divider: bool | None = None

spacing class-attribute instance-attribute

spacing: int | None = None

id class-attribute instance-attribute

id: int | None = None

type property

Container

Bases: _Component

accent_color class-attribute instance-attribute

accent_color: int | None = None

spoiler class-attribute instance-attribute

spoiler: bool | None = None

components property

components: tuple[Component, ...]

id class-attribute instance-attribute

id: int | None = None

type property

UnknownComponent

Bases: Struct

A component bostie cannot model; raw is sent back unchanged.

type instance-attribute

type: int | None

raw instance-attribute

raw: Raw

SubmittedTextDisplay

Bases: _Submitted

A text display of a submitted modal, which carries no answer.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

SubmittedLabel

Bases: _Submitted

A label of a submitted modal and the answered component inside it.

component property

component: SubmittedComponent

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

SubmittedInput

Bases: _Submitted

What the user answered in one component of a modal.

custom_id instance-attribute

custom_id: str

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

SubmittedTextInput

Bases: SubmittedInput

value instance-attribute

value: str

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

SubmittedValues

Bases: SubmittedInput

The options picked in a string select or a checkbox group.

values instance-attribute

values: tuple[str, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

SubmittedIds

Bases: SubmittedInput

The users, roles or channels picked in a select, or the files uploaded.

values instance-attribute

values: tuple[int, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

SubmittedStringSelect

Bases: SubmittedValues

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[str, ...]

SubmittedUserSelect

Bases: SubmittedIds

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[int, ...]

SubmittedRoleSelect

Bases: SubmittedIds

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[int, ...]

SubmittedMentionableSelect

Bases: SubmittedIds

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[int, ...]

SubmittedChannelSelect

Bases: SubmittedIds

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[int, ...]

SubmittedFileUpload

Bases: SubmittedIds

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[int, ...]

SubmittedRadioGroup

Bases: SubmittedInput

value instance-attribute

value: str | None

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

SubmittedCheckboxGroup

Bases: SubmittedValues

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

values instance-attribute

values: tuple[str, ...]

SubmittedCheckbox

Bases: SubmittedInput

value instance-attribute

value: bool

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

custom_id instance-attribute

custom_id: str

decode_components

decode_components(raws: Iterable[Raw]) -> tuple[Component, ...]

Decode components; those of unknown type or shape become UnknownComponent.

decode_submitted

decode_submitted(raws: Iterable[Raw]) -> tuple[SubmittedComponent, ...]

Decode a modal's answered components; unknown ones become UnknownComponent.

bostie.models.interaction

InteractionDataOption

Bases: Model

An option the user filled; subcommands and groups nest their options.

name instance-attribute

name: str

type instance-attribute

type: OptionType

value class-attribute instance-attribute

value: str | int | float | bool | None = None

options class-attribute instance-attribute

options: tuple[InteractionDataOption, ...] = ()

focused class-attribute instance-attribute

focused: bool = False

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

CommandData

Bases: Model, Snowflake

The command an interaction invokes and the options the user filled.

id instance-attribute

id: int

name instance-attribute

name: str

type instance-attribute

resolved class-attribute instance-attribute

resolved: Resolved = msgspec.field(default_factory=Resolved)

options class-attribute instance-attribute

options: tuple[InteractionDataOption, ...] = ()

guild_id class-attribute instance-attribute

guild_id: int | None = None

target_id class-attribute instance-attribute

target_id: int | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

ComponentData

Bases: Model

The component an interaction comes from: a button, or a type with no model.

custom_id instance-attribute

custom_id: str

component_type instance-attribute

component_type: ComponentType

id class-attribute instance-attribute

id: int | None = None

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

StringSelectData

Bases: ComponentData

A string select and the options picked in it.

values instance-attribute

values: tuple[str, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

custom_id instance-attribute

custom_id: str

component_type instance-attribute

component_type: ComponentType

id class-attribute instance-attribute

id: int | None = None

EntitySelectData

Bases: ComponentData

A user, role, mentionable or channel select and the ids picked in it.

values instance-attribute

values: tuple[int, ...]

resolved class-attribute instance-attribute

resolved: Resolved = msgspec.field(default_factory=Resolved)

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

custom_id instance-attribute

custom_id: str

component_type instance-attribute

component_type: ComponentType

id class-attribute instance-attribute

id: int | None = None

ApplicationCommandOptionChoice

Bases: Builder

name instance-attribute

name: str

name_localizations class-attribute instance-attribute

name_localizations: dict[str, str] | None = None

value instance-attribute

value: str | int | float

ApplicationCommandOption

Bases: Builder

An option of a slash command; subcommands and groups nest their options.

type instance-attribute

type: OptionType

name instance-attribute

name: str

name_localizations class-attribute instance-attribute

name_localizations: dict[str, str] | None = None

description instance-attribute

description: str

description_localizations class-attribute instance-attribute

description_localizations: dict[str, str] | None = None

required class-attribute instance-attribute

required: bool | None = None

choices class-attribute instance-attribute

options class-attribute instance-attribute

options: tuple[ApplicationCommandOption, ...] = ()

channel_types class-attribute instance-attribute

channel_types: tuple[ChannelType, ...] = ()

min_value class-attribute instance-attribute

min_value: int | float | None = None

max_value class-attribute instance-attribute

max_value: int | float | None = None

min_length class-attribute instance-attribute

min_length: int | None = None

max_length class-attribute instance-attribute

max_length: int | None = None

autocomplete class-attribute instance-attribute

autocomplete: bool | None = None

file_types class-attribute instance-attribute

file_types: tuple[str, ...] = ()

ApplicationCommand

Bases: Model, Snowflake

A command of the app, global or in the guild of guild_id.

id instance-attribute

id: int

type class-attribute instance-attribute

application_id instance-attribute

application_id: int

guild_id class-attribute instance-attribute

guild_id: int | None = None

name instance-attribute

name: str

name_localizations class-attribute instance-attribute

name_localizations: dict[str, str] | None = None

description instance-attribute

description: str

description_localizations class-attribute instance-attribute

description_localizations: dict[str, str] | None = None

options class-attribute instance-attribute

options: tuple[ApplicationCommandOption, ...] = ()

default_member_permissions instance-attribute

default_member_permissions: Permissions | None

nsfw class-attribute instance-attribute

nsfw: bool = False

integration_types class-attribute instance-attribute

integration_types: tuple[ApplicationIntegrationType, ...] = ()

contexts class-attribute instance-attribute

contexts: tuple[InteractionContextType, ...] | None = None

version instance-attribute

version: int

handler class-attribute instance-attribute

handler: EntryPointCommandHandlerType | None = None

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

CommandPermission

Bases: Model, Snowflake

Whether a role, a user or a channel may use a command.

id instance-attribute

id: int

type instance-attribute

permission instance-attribute

permission: bool

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

GuildCommandPermissions

Bases: Model, Snowflake

A command's permissions in a guild, or every command's if id is the app's.

id instance-attribute

id: int

application_id instance-attribute

application_id: int

guild_id instance-attribute

guild_id: int

permissions instance-attribute

permissions: tuple[CommandPermission, ...]

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

CommandInteraction

Bases: _Interaction

A slash, user or message command run.

data instance-attribute

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

application_id instance-attribute

application_id: int

type instance-attribute

token instance-attribute

token: str

version instance-attribute

version: int

locale instance-attribute

locale: Locale

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

attachment_size_limit instance-attribute

attachment_size_limit: int

guild class-attribute instance-attribute

guild: InteractionGuild | None = None

guild_id class-attribute instance-attribute

guild_id: int | None = None

channel class-attribute instance-attribute

channel: PartialChannel | None = None

channel_id class-attribute instance-attribute

channel_id: int | None = None

member class-attribute instance-attribute

member: Member | None = None

guild_locale class-attribute instance-attribute

guild_locale: Locale | None = None

context class-attribute instance-attribute

context: InteractionContextType | None = None

user property

user: User

The user who triggered the interaction, in a guild or in a DM.

app_permissions property

app_permissions: Permissions

entitlements property

entitlements: tuple[PartialEntitlement, ...]

The user's entitlements to the app's SKUs; test ones have no period.

AutocompleteInteraction

Bases: _Interaction

A request for choices while the user types an option.

data instance-attribute

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

application_id instance-attribute

application_id: int

type instance-attribute

token instance-attribute

token: str

version instance-attribute

version: int

locale instance-attribute

locale: Locale

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

attachment_size_limit instance-attribute

attachment_size_limit: int

guild class-attribute instance-attribute

guild: InteractionGuild | None = None

guild_id class-attribute instance-attribute

guild_id: int | None = None

channel class-attribute instance-attribute

channel: PartialChannel | None = None

channel_id class-attribute instance-attribute

channel_id: int | None = None

member class-attribute instance-attribute

member: Member | None = None

guild_locale class-attribute instance-attribute

guild_locale: Locale | None = None

context class-attribute instance-attribute

context: InteractionContextType | None = None

user property

user: User

The user who triggered the interaction, in a guild or in a DM.

app_permissions property

app_permissions: Permissions

entitlements property

entitlements: tuple[PartialEntitlement, ...]

The user's entitlements to the app's SKUs; test ones have no period.

ComponentInteraction

Bases: _Interaction

A button press or a select menu pick.

data property

The component and what was picked in it, decoded on each access.

message property

The message the component is on, decoded on each access.

message_flags property

message_flags: MessageFlags

The flags of the component's message, decoded without the rest of it.

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

application_id instance-attribute

application_id: int

type instance-attribute

token instance-attribute

token: str

version instance-attribute

version: int

locale instance-attribute

locale: Locale

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

attachment_size_limit instance-attribute

attachment_size_limit: int

guild class-attribute instance-attribute

guild: InteractionGuild | None = None

guild_id class-attribute instance-attribute

guild_id: int | None = None

channel class-attribute instance-attribute

channel: PartialChannel | None = None

channel_id class-attribute instance-attribute

channel_id: int | None = None

member class-attribute instance-attribute

member: Member | None = None

guild_locale class-attribute instance-attribute

guild_locale: Locale | None = None

context class-attribute instance-attribute

context: InteractionContextType | None = None

user property

user: User

The user who triggered the interaction, in a guild or in a DM.

app_permissions property

app_permissions: Permissions

entitlements property

entitlements: tuple[PartialEntitlement, ...]

The user's entitlements to the app's SKUs; test ones have no period.

ModalSubmitData

Bases: Model

The modal a user submitted and what they answered in it.

custom_id instance-attribute

custom_id: str

resolved class-attribute instance-attribute

resolved: Resolved = msgspec.field(default_factory=Resolved)

components property

components: tuple[SubmittedComponent, ...]

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

ModalSubmitInteraction

Bases: _Interaction

A modal submit.

data instance-attribute

message property

message: Message | WebhookMessage | None

The message whose component opened the modal, decoded on each access.

message_flags property

message_flags: MessageFlags | None

The flags of that message, decoded alone, or None without a message.

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

id instance-attribute

id: int

application_id instance-attribute

application_id: int

type instance-attribute

token instance-attribute

token: str

version instance-attribute

version: int

locale instance-attribute

locale: Locale

authorizing_integration_owners instance-attribute

authorizing_integration_owners: dict[ApplicationIntegrationType, int]

attachment_size_limit instance-attribute

attachment_size_limit: int

guild class-attribute instance-attribute

guild: InteractionGuild | None = None

guild_id class-attribute instance-attribute

guild_id: int | None = None

channel class-attribute instance-attribute

channel: PartialChannel | None = None

channel_id class-attribute instance-attribute

channel_id: int | None = None

member class-attribute instance-attribute

member: Member | None = None

guild_locale class-attribute instance-attribute

guild_locale: Locale | None = None

context class-attribute instance-attribute

context: InteractionContextType | None = None

user property

user: User

The user who triggered the interaction, in a guild or in a DM.

app_permissions property

app_permissions: Permissions

entitlements property

entitlements: tuple[PartialEntitlement, ...]

The user's entitlements to the app's SKUs; test ones have no period.

UnknownInteraction

Bases: Model, Snowflake

An interaction bostie does not model; see raw.

id instance-attribute

id: int

type instance-attribute

created_at property

created_at: datetime

When the object was created, in UTC, read from its id.

raw_json class-attribute instance-attribute

raw_json: bytes | None = msgspec.field(default=None, name='__bostie_raw__')

raw property

raw: Any

The payload this object was received as, or None for nested objects.

decode_interaction

decode_interaction(data: bytes) -> Interaction

Decode an interaction into the model of its type, or UnknownInteraction.