이벤트 목록
모든 이벤트 클래스는 bostie.events에 있습니다. 이벤트 가이드에서 설명하듯이 @bot.listen으로 수신합니다. 인텐트 열에는 Discord가 그 이벤트를 보내는 데 필요한 인텐트가 있으며, 그중 하나만 있어도 됩니다. 빈 칸은 Discord가 인텐트 없이 보내거나, 요청에 대한 응답으로만 보낸다는 뜻입니다. 모든 게이트웨이 이벤트에는 shard_id, raw_json, raw도 있습니다. 모든 필드와 그 타입은 API 레퍼런스에 있습니다.
세션
| 이벤트 |
디스패치 |
인텐트 |
필드 |
Ready |
READY |
|
user, guilds(각 서버의 GuildCreate가 올 때까지 사용할 수 없는 상태), application, session_id, shard |
Resumed |
RESUMED |
|
|
UserUpdate |
USER_UPDATE |
|
봇 자신의 user, old |
GatewayRateLimited |
RATE_LIMITED |
|
opcode, retry_after, meta |
서버
| 이벤트 |
디스패치 |
인텐트 |
필드 |
GuildCreate |
GUILD_CREATE |
GUILDS |
guild, joined, channels, threads, voice_states, stage_instances, guild_scheduled_events, soundboard_sounds, members, presences |
GuildUpdate |
GUILD_UPDATE |
GUILDS |
guild, old |
GuildDelete |
GUILD_DELETE |
GUILDS |
guild_id, unavailable, guild(캐시된 값) |
RoleCreate |
GUILD_ROLE_CREATE |
GUILDS |
guild_id, role |
RoleUpdate |
GUILD_ROLE_UPDATE |
GUILDS |
guild_id, role, old |
RoleDelete |
GUILD_ROLE_DELETE |
GUILDS |
guild_id, role_id, role(캐시된 값) |
EmojisUpdate |
GUILD_EMOJIS_UPDATE |
GUILD_EXPRESSIONS |
guild_id, emojis, old |
StickersUpdate |
GUILD_STICKERS_UPDATE |
GUILD_EXPRESSIONS |
guild_id, stickers, old |
SoundboardSoundCreate |
GUILD_SOUNDBOARD_SOUND_CREATE |
GUILD_EXPRESSIONS |
sound |
SoundboardSoundUpdate |
GUILD_SOUNDBOARD_SOUND_UPDATE |
GUILD_EXPRESSIONS |
sound, old |
SoundboardSoundDelete |
GUILD_SOUNDBOARD_SOUND_DELETE |
GUILD_EXPRESSIONS |
sound_id, guild_id, sound |
SoundboardSoundsUpdate |
GUILD_SOUNDBOARD_SOUNDS_UPDATE |
GUILD_EXPRESSIONS |
soundboard_sounds, guild_id, old |
SoundboardSounds |
SOUNDBOARD_SOUNDS |
|
soundboard_sounds, guild_id. bot.request_soundboard_sounds에 대한 응답 |
AuditLogEntryCreate |
GUILD_AUDIT_LOG_ENTRY_CREATE |
GUILD_MODERATION |
guild_id, entry |
BanAdd |
GUILD_BAN_ADD |
GUILD_MODERATION |
guild_id, user |
BanRemove |
GUILD_BAN_REMOVE |
GUILD_MODERATION |
guild_id, user |
GuildIntegrationsUpdate |
GUILD_INTEGRATIONS_UPDATE |
GUILD_INTEGRATIONS |
guild_id |
IntegrationCreate |
INTEGRATION_CREATE |
GUILD_INTEGRATIONS |
guild_id, integration |
IntegrationUpdate |
INTEGRATION_UPDATE |
GUILD_INTEGRATIONS |
guild_id, integration |
IntegrationDelete |
INTEGRATION_DELETE |
GUILD_INTEGRATIONS |
id, guild_id, application_id |
WebhooksUpdate |
WEBHOOKS_UPDATE |
GUILD_WEBHOOKS |
guild_id, channel_id |
CommandPermissionsUpdate |
APPLICATION_COMMAND_PERMISSIONS_UPDATE |
|
permissions |
멤버와 프레즌스
| 이벤트 |
디스패치 |
인텐트 |
필드 |
MemberJoin |
GUILD_MEMBER_ADD |
GUILD_MEMBERS |
guild_id, member |
MemberUpdate |
GUILD_MEMBER_UPDATE |
GUILD_MEMBERS |
guild_id, user, roles, nick, joined_at, communication_disabled_until 및 그 밖의 멤버 필드, old |
MemberRemove |
GUILD_MEMBER_REMOVE |
GUILD_MEMBERS |
guild_id, user, member(캐시된 값) |
MembersChunk |
GUILD_MEMBERS_CHUNK |
|
guild_id, members, presences, not_found, chunk_index, chunk_count, nonce. bot.request_members에 대한 응답 |
PresenceUpdate |
PRESENCE_UPDATE |
GUILD_PRESENCES |
guild_id, presence, old |
채널과 스레드
| 이벤트 |
디스패치 |
인텐트 |
필드 |
ChannelCreate |
CHANNEL_CREATE |
GUILDS |
channel |
ChannelUpdate |
CHANNEL_UPDATE |
GUILDS |
channel, old |
ChannelDelete |
CHANNEL_DELETE |
GUILDS |
channel |
ChannelPinsUpdate |
CHANNEL_PINS_UPDATE |
GUILDS, DIRECT_MESSAGES |
guild_id, channel_id, last_pin_timestamp |
ThreadCreate |
THREAD_CREATE |
GUILDS |
channel, newly_created, member |
ThreadUpdate |
THREAD_UPDATE |
GUILDS |
channel, old |
ThreadDelete |
THREAD_DELETE |
GUILDS |
id, guild_id, parent_id, type, thread(캐시된 값) |
ThreadListSync |
THREAD_LIST_SYNC |
GUILDS |
guild_id, channel_ids, threads, members |
ThreadMemberUpdate |
THREAD_MEMBER_UPDATE |
GUILDS |
guild_id, 봇 자신의 thread_member |
ThreadMembersUpdate |
THREAD_MEMBERS_UPDATE |
GUILDS, GUILD_MEMBERS |
id, guild_id, member_count, added_members, removed_member_ids |
StageInstanceCreate |
STAGE_INSTANCE_CREATE |
GUILDS |
stage_instance |
StageInstanceUpdate |
STAGE_INSTANCE_UPDATE |
GUILDS |
stage_instance, old |
StageInstanceDelete |
STAGE_INSTANCE_DELETE |
GUILDS |
stage_instance |
InviteCreate |
INVITE_CREATE |
GUILD_INVITES |
code, channel_id, guild_id, inviter, max_age, max_uses, expires_at 등 |
InviteDelete |
INVITE_DELETE |
GUILD_INVITES |
channel_id, guild_id, code |
메시지, 반응, 투표
| 이벤트 |
디스패치 |
인텐트 |
필드 |
MessageCreate |
MESSAGE_CREATE |
GUILD_MESSAGES, DIRECT_MESSAGES |
message |
MessageUpdate |
MESSAGE_UPDATE |
GUILD_MESSAGES, DIRECT_MESSAGES |
message, old |
MessageDelete |
MESSAGE_DELETE |
GUILD_MESSAGES, DIRECT_MESSAGES |
id, channel_id, guild_id, message(캐시된 값) |
MessageDeleteBulk |
MESSAGE_DELETE_BULK |
GUILD_MESSAGES |
ids, channel_id, guild_id, messages(캐시된 값) |
TypingStart |
TYPING_START |
GUILD_MESSAGE_TYPING, DIRECT_MESSAGE_TYPING |
channel_id, guild_id, user_id, timestamp, member |
ReactionAdd |
MESSAGE_REACTION_ADD |
GUILD_MESSAGE_REACTIONS, DIRECT_MESSAGE_REACTIONS |
user_id, channel_id, message_id, guild_id, emoji, burst, type, member, message_author_id, burst_colors |
ReactionRemove |
MESSAGE_REACTION_REMOVE |
GUILD_MESSAGE_REACTIONS, DIRECT_MESSAGE_REACTIONS |
user_id, channel_id, message_id, guild_id, emoji, burst, type |
ReactionRemoveAll |
MESSAGE_REACTION_REMOVE_ALL |
GUILD_MESSAGE_REACTIONS, DIRECT_MESSAGE_REACTIONS |
channel_id, message_id, guild_id |
ReactionRemoveEmoji |
MESSAGE_REACTION_REMOVE_EMOJI |
GUILD_MESSAGE_REACTIONS, DIRECT_MESSAGE_REACTIONS |
channel_id, message_id, guild_id, emoji |
PollVoteAdd |
MESSAGE_POLL_VOTE_ADD |
GUILD_MESSAGE_POLLS, DIRECT_MESSAGE_POLLS |
user_id, channel_id, message_id, guild_id, answer_id |
PollVoteRemove |
MESSAGE_POLL_VOTE_REMOVE |
GUILD_MESSAGE_POLLS, DIRECT_MESSAGE_POLLS |
user_id, channel_id, message_id, guild_id, answer_id |
메시지 내용과 AutoModerationActionExecution의 content에는 MESSAGE_CONTENT 인텐트가 필요합니다. 단, 개인 메시지(DM)와 봇을 멘션한 메시지는 예외입니다.
음성
| 이벤트 |
디스패치 |
인텐트 |
필드 |
VoiceStateUpdate |
VOICE_STATE_UPDATE |
GUILD_VOICE_STATES |
voice_state, old |
VoiceServerUpdate |
VOICE_SERVER_UPDATE |
|
token, guild_id, endpoint |
VoiceChannelEffectSend |
VOICE_CHANNEL_EFFECT_SEND |
GUILD_VOICE_STATES |
channel_id, guild_id, user_id, emoji, animation_type, animation_id, sound_id, sound_volume |
VoiceChannelStatusUpdate |
VOICE_CHANNEL_STATUS_UPDATE |
GUILDS |
id, guild_id, status |
VoiceChannelStartTimeUpdate |
VOICE_CHANNEL_START_TIME_UPDATE |
GUILDS |
id, guild_id, voice_start_time |
ChannelInfo |
CHANNEL_INFO |
|
guild_id, channels. bot.request_channel_info에 대한 응답 |
봇 자신의 음성 연결에서 오는 이벤트는 음성 가이드에 정리되어 있습니다.
인터랙션, 관리, 예약 이벤트
| 이벤트 |
디스패치 |
인텐트 |
필드 |
InteractionCreate |
INTERACTION_CREATE |
|
interaction |
AutoModerationRuleCreate |
AUTO_MODERATION_RULE_CREATE |
AUTO_MODERATION_CONFIGURATION |
rule |
AutoModerationRuleUpdate |
AUTO_MODERATION_RULE_UPDATE |
AUTO_MODERATION_CONFIGURATION |
rule |
AutoModerationRuleDelete |
AUTO_MODERATION_RULE_DELETE |
AUTO_MODERATION_CONFIGURATION |
rule |
AutoModerationActionExecution |
AUTO_MODERATION_ACTION_EXECUTION |
AUTO_MODERATION_EXECUTION |
guild_id, action, rule_id, rule_trigger_type, user_id, channel_id, message_id, content, matched_keyword, matched_content |
ScheduledEventCreate |
GUILD_SCHEDULED_EVENT_CREATE |
GUILD_SCHEDULED_EVENTS |
scheduled_event |
ScheduledEventUpdate |
GUILD_SCHEDULED_EVENT_UPDATE |
GUILD_SCHEDULED_EVENTS |
scheduled_event, old |
ScheduledEventDelete |
GUILD_SCHEDULED_EVENT_DELETE |
GUILD_SCHEDULED_EVENTS |
scheduled_event |
ScheduledEventUserAdd |
GUILD_SCHEDULED_EVENT_USER_ADD |
GUILD_SCHEDULED_EVENTS |
guild_scheduled_event_id, user_id, guild_id |
ScheduledEventUserRemove |
GUILD_SCHEDULED_EVENT_USER_REMOVE |
GUILD_SCHEDULED_EVENTS |
guild_scheduled_event_id, user_id, guild_id |
수익화
| 이벤트 |
디스패치 |
인텐트 |
필드 |
EntitlementCreate |
ENTITLEMENT_CREATE |
|
entitlement. 테스트 엔타이틀먼트이면 PartialEntitlement |
EntitlementUpdate |
ENTITLEMENT_UPDATE |
|
entitlement. 구독은 끝날 때만 발생 |
EntitlementDelete |
ENTITLEMENT_DELETE |
|
entitlement |
SubscriptionCreate |
SUBSCRIPTION_CREATE |
|
subscription |
SubscriptionUpdate |
SUBSCRIPTION_UPDATE |
|
subscription |
SubscriptionDelete |
SUBSCRIPTION_DELETE |
|
subscription |
웹후크 이벤트
Discord는 이 이벤트들을 앱의 Webhook Events URL로만 보내며, 이 URL은 ASGIApp이 처리합니다. 위의 엔타이틀먼트 이벤트도 이곳으로 들어옵니다.
| 이벤트 |
타입 |
필드 |
ApplicationAuthorized |
APPLICATION_AUTHORIZED |
integration_type, user, scopes, guild |
ApplicationDeauthorized |
APPLICATION_DEAUTHORIZED |
user |
QuestUserEnrollment |
QUEST_USER_ENROLLMENT |
|
LobbyMessageCreate |
LOBBY_MESSAGE_CREATE |
message |
LobbyMessageUpdate |
LOBBY_MESSAGE_UPDATE |
message |
LobbyMessageDelete |
LOBBY_MESSAGE_DELETE |
id, lobby_id |
GameDirectMessageCreate |
GAME_DIRECT_MESSAGE_CREATE |
message |
GameDirectMessageUpdate |
GAME_DIRECT_MESSAGE_UPDATE |
message |
GameDirectMessageDelete |
GAME_DIRECT_MESSAGE_DELETE |
message |
모든 디스패치
| 이벤트 |
디스패치 |
인텐트 |
필드 |
RawEvent |
모두 |
|
name, seq, raw, raw_json. 모델링 여부와 관계없이 모든 디스패치에 발생 |
봇 이벤트
이 이벤트들은 Discord가 아니라 bostie가 보내며, 이름도 bostie가 정한 것입니다.
| 이벤트 |
이름 |
필드 |
발생 시점 |
Starting |
bot.starting |
|
start()가 동기화하고 연결하기 직전. REST는 동작합니다 |
Started |
bot.started |
|
모든 샤드가 준비되었을 때. start()마다 한 번 |
Stopping |
bot.stopping |
|
Started 뒤에 close()가 시작되었을 때. 게이트웨이는 아직 열려 있습니다 |
Stopped |
bot.stopped |
|
close()가 끝났을 때. 게이트웨이와 REST는 닫혔습니다 |
ShardReady |
shard.ready |
shard_id |
샤드의 새 세션이 준비되고 그 서버들이 도착했을 때 |
ShardDisconnect |
shard.disconnect |
shard_id, code, reason, resuming |
샤드의 연결이 끊겼을 때 |
ShardStop |
shard.stop |
shard_id, code, reason |
샤드가 완전히 멈췄을 때 |
ShardBackpressure |
shard.backpressure |
shard_id, queued_bytes |
이벤트 루프가 뒤처져서 샤드가 읽기를 일시 중지했을 때 |
ListenerError |
bot.listener_error |
listener, event, error |
리스너가 예외를 발생시켰을 때 |
TaskError |
bot.task_error |
task, error |
백그라운드 태스크가 예외를 발생시켰을 때 |