Documentation ¶
Index ¶
- Constants
- type AddedThreadMember
- type CloseEventCode
- type CloseHandlerFunc
- type Config
- type ConfigOpt
- func WithAutoReconnect(autoReconnect bool) ConfigOpt
- func WithBrowser(browser string) ConfigOpt
- func WithCompress(compress bool) ConfigOpt
- func WithDevice(device string) ConfigOpt
- func WithDialer(dialer *websocket.Dialer) ConfigOpt
- func WithEnableRawEvents(enableRawEventEvents bool) ConfigOpt
- func WithIntents(intents ...Intents) ConfigOpt
- func WithLargeThreshold(largeThreshold int) ConfigOpt
- func WithLogger(logger log.Logger) ConfigOpt
- func WithMaxReconnectTries(maxReconnectTries int) ConfigOpt
- func WithOS(os string) ConfigOpt
- func WithPresence(presence MessageDataPresenceUpdate) ConfigOpt
- func WithRateLimiter(rateLimiter RateLimiter) ConfigOpt
- func WithRateRateLimiterConfigOpts(opts ...RateLimiterConfigOpt) ConfigOpt
- func WithSequence(sequence int) ConfigOpt
- func WithSessionID(sessionID string) ConfigOpt
- func WithShardCount(shardCount int) ConfigOpt
- func WithShardID(shardID int) ConfigOpt
- func WithURL(url string) ConfigOpt
- type CreateFunc
- type EventApplicationCommandPermissionsUpdate
- type EventAutoModerationActionExecution
- type EventAutoModerationRuleCreate
- type EventAutoModerationRuleDelete
- type EventAutoModerationRuleUpdate
- type EventChannelCreate
- type EventChannelDelete
- type EventChannelPinsUpdate
- type EventChannelUpdate
- type EventData
- type EventGuildBanAdd
- type EventGuildBanRemove
- type EventGuildCreate
- type EventGuildDelete
- type EventGuildEmojisUpdate
- type EventGuildIntegrationsUpdate
- type EventGuildMemberAdd
- type EventGuildMemberRemove
- type EventGuildMemberUpdate
- type EventGuildMembersChunk
- type EventGuildRoleCreate
- type EventGuildRoleDelete
- type EventGuildRoleUpdate
- type EventGuildScheduledEventCreate
- type EventGuildScheduledEventDelete
- type EventGuildScheduledEventUpdate
- type EventGuildScheduledEventUserAdd
- type EventGuildScheduledEventUserRemove
- type EventGuildStickersUpdate
- type EventGuildUpdate
- type EventHandlerFunc
- type EventIntegrationCreate
- type EventIntegrationDelete
- type EventIntegrationUpdate
- type EventInteractionCreate
- type EventInviteCreate
- type EventInviteDelete
- type EventMessageCreate
- type EventMessageDelete
- type EventMessageDeleteBulk
- type EventMessageReactionAdd
- type EventMessageReactionRemove
- type EventMessageReactionRemoveAll
- type EventMessageReactionRemoveEmoji
- type EventMessageUpdate
- type EventPresenceUpdate
- type EventRaw
- type EventReady
- type EventStageInstanceCreate
- type EventStageInstanceDelete
- type EventStageInstanceUpdate
- type EventThreadCreate
- type EventThreadDelete
- type EventThreadListSync
- type EventThreadMemberUpdate
- type EventThreadMembersUpdate
- type EventThreadUpdate
- type EventType
- type EventTypingStart
- type EventUserUpdate
- type EventVoiceServerUpdate
- type EventVoiceStateUpdate
- type EventWebhooksUpdate
- type Gateway
- type IdentifyCommandDataProperties
- type Intents
- type Message
- type MessageData
- type MessageDataHeartbeat
- type MessageDataHello
- type MessageDataIdentify
- type MessageDataInvalidSession
- type MessageDataPresenceUpdate
- func NewCompetingPresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
- func NewGamePresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
- func NewListeningPresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
- func NewPresence(activityType discord.ActivityType, name string, url string, ...) MessageDataPresenceUpdate
- func NewStreamingPresence(name string, url string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
- func NewWatchingPresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
- type MessageDataRequestGuildMembers
- type MessageDataResume
- type MessageDataVoiceStateUpdate
- type Opcode
- type RateLimiter
- type RateLimiterConfig
- type RateLimiterConfigOpt
- type Status
Constants ¶
const Version = 10
Version defines which discord API version disgo should use to connect to discord.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddedThreadMember ¶ added in v0.13.0
type CloseEventCode ¶ added in v0.13.0
type CloseEventCode int
const ( CloseEventCodeUnknownError CloseEventCode = iota + 4000 CloseEventCodeUnknownOpcode CloseEventCodeDecodeError CloseEventCodeNotAuthenticated CloseEventCodeAuthenticationFailed CloseEventCodeAlreadyAuthenticated CloseEventCodeInvalidSeq CloseEventCodeRateLimited CloseEventCodeSessionTimedOut CloseEventCodeInvalidShard CloseEventCodeShardingRequired CloseEventCodeInvalidAPIVersion CloseEventCodeInvalidIntents CloseEventCodeDisallowedIntents )
func (CloseEventCode) ShouldReconnect ¶ added in v0.13.0
func (c CloseEventCode) ShouldReconnect() bool
type CloseHandlerFunc ¶ added in v0.11.0
CloseHandlerFunc is a function that is called when the Gateway is closed.
type Config ¶
type Config struct { Logger log.Logger Dialer *websocket.Dialer LargeThreshold int Intents Intents Compress bool URL string ShardID int ShardCount int SessionID *string LastSequenceReceived *int AutoReconnect bool MaxReconnectTries int EnableRawEvents bool RateLimiter RateLimiter RateRateLimiterConfigOpts []RateLimiterConfigOpt Presence *MessageDataPresenceUpdate OS string Browser string Device string }
Config lets you configure your Gateway instance.
func DefaultConfig ¶
func DefaultConfig() *Config
DefaultConfig returns a Config with sensible defaults.
type ConfigOpt ¶
type ConfigOpt func(config *Config)
ConfigOpt is a type alias for a function that takes a Config and is used to configure your Server.
func WithAutoReconnect ¶
WithAutoReconnect sets whether the Gateway should automatically reconnect to Discord.
func WithBrowser ¶
WithBrowser sets the browser the bot is running on. See here for more information: https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties
func WithCompress ¶
WithCompress sets whether this Gateway supports compression. See here for more information: https://discord.com/developers/docs/topics/gateway#encoding-and-compression
func WithDevice ¶
WithDevice sets the device the bot is running on. See here for more information: https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties
func WithDialer ¶ added in v0.10.0
WithDialer sets the websocket.Dialer for the Gateway.
func WithEnableRawEvents ¶ added in v0.13.0
WithEnableRawEvents enables/disables the EventTypeRaw.
func WithIntents ¶ added in v0.13.0
WithIntents sets the Intents for the Gateway. See here for more information: https://discord.com/developers/docs/topics/gateway#gateway-intents
func WithLargeThreshold ¶
WithLargeThreshold sets the threshold for the Gateway. See here for more information: https://discord.com/developers/docs/topics/gateway#identify-identify-structure
func WithLogger ¶
WithLogger sets the Logger for the Gateway.
func WithMaxReconnectTries ¶
WithMaxReconnectTries sets the maximum number of reconnect attempts before stopping.
func WithOS ¶
WithOS sets the operating system the bot is running on. See here for more information: https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties
func WithPresence ¶
func WithPresence(presence MessageDataPresenceUpdate) ConfigOpt
WithPresence sets the initial presence the bot should display.
func WithRateLimiter ¶
func WithRateLimiter(rateLimiter RateLimiter) ConfigOpt
WithRateLimiter sets the grate.RateLimiter for the Gateway.
func WithRateRateLimiterConfigOpts ¶ added in v0.12.0
func WithRateRateLimiterConfigOpts(opts ...RateLimiterConfigOpt) ConfigOpt
WithRateRateLimiterConfigOpts lets you configure the default RateLimiter.
func WithSequence ¶
WithSequence sets the last sequence received for the Gateway. If sessionID and lastSequence is present while connecting, the Gateway will try to resume the session.
func WithSessionID ¶
WithSessionID sets the Session ID for the Gateway. If sessionID and lastSequence is present while connecting, the Gateway will try to resume the session.
func WithShardCount ¶
WithShardCount sets the shard count for the Gateway. See here for more information on sharding: https://discord.com/developers/docs/topics/gateway#sharding
func WithShardID ¶
WithShardID sets the shard ID for the Gateway. See here for more information on sharding: https://discord.com/developers/docs/topics/gateway#sharding
type CreateFunc ¶
type CreateFunc func(token string, eventHandlerFunc EventHandlerFunc, closeHandlerFUnc CloseHandlerFunc, opts ...ConfigOpt) Gateway
CreateFunc is a type that is used to create a new Gateway(s).
type EventApplicationCommandPermissionsUpdate ¶ added in v0.13.0
type EventApplicationCommandPermissionsUpdate struct {
discord.ApplicationCommandPermissions
}
type EventAutoModerationActionExecution ¶ added in v0.13.0
type EventAutoModerationActionExecution struct { GuildID snowflake.ID `json:"guild_id"` Action discord.AutoModerationAction `json:"action"` RuleID snowflake.ID `json:"rule_id"` RuleTriggerType discord.AutoModerationTriggerType `json:"rule_trigger_type"` UserID snowflake.ID `json:"user_id"` ChannelID *snowflake.ID `json:"channel_id,omitempty"` MessageID *snowflake.ID `json:"message_id,omitempty"` AlertSystemMessageID snowflake.ID `json:"alert_system_message_id"` Content string `json:"content"` MatchedKeywords *string `json:"matched_keywords"` MatchedContent *string `json:"matched_content"` }
type EventAutoModerationRuleCreate ¶ added in v0.13.0
type EventAutoModerationRuleCreate struct {
discord.AutoModerationRule
}
type EventAutoModerationRuleDelete ¶ added in v0.13.0
type EventAutoModerationRuleDelete struct {
discord.AutoModerationRule
}
type EventAutoModerationRuleUpdate ¶ added in v0.13.0
type EventAutoModerationRuleUpdate struct {
discord.AutoModerationRule
}
type EventChannelCreate ¶ added in v0.13.0
func (*EventChannelCreate) UnmarshalJSON ¶ added in v0.13.0
func (e *EventChannelCreate) UnmarshalJSON(data []byte) error
type EventChannelDelete ¶ added in v0.13.0
func (*EventChannelDelete) UnmarshalJSON ¶ added in v0.13.0
func (e *EventChannelDelete) UnmarshalJSON(data []byte) error
type EventChannelPinsUpdate ¶ added in v0.13.0
type EventChannelUpdate ¶ added in v0.13.0
func (*EventChannelUpdate) UnmarshalJSON ¶ added in v0.13.0
func (e *EventChannelUpdate) UnmarshalJSON(data []byte) error
type EventData ¶ added in v0.13.0
type EventData interface { MessageData // contains filtered or unexported methods }
type EventGuildBanAdd ¶ added in v0.13.0
type EventGuildBanRemove ¶ added in v0.13.0
type EventGuildCreate ¶ added in v0.13.0
type EventGuildCreate struct {
discord.GatewayGuild
}
type EventGuildDelete ¶ added in v0.13.0
type EventGuildDelete struct {
discord.GatewayGuild
}
type EventGuildEmojisUpdate ¶ added in v0.13.0
type EventGuildIntegrationsUpdate ¶ added in v0.13.0
type EventGuildIntegrationsUpdate struct {
GuildID snowflake.ID `json:"guild_id"`
}
type EventGuildMemberAdd ¶ added in v0.13.0
type EventGuildMemberRemove ¶ added in v0.13.0
type EventGuildMemberUpdate ¶ added in v0.13.0
type EventGuildMembersChunk ¶ added in v0.13.0
type EventGuildMembersChunk struct { GuildID snowflake.ID `json:"guild_id"` Members []discord.Member `json:"members"` ChunkIndex int `json:"chunk_index"` ChunkCount int `json:"chunk_count"` NotFound []snowflake.ID `json:"not_found"` Presences []discord.Presence `json:"presences"` Nonce string `json:"nonce"` }
type EventGuildRoleCreate ¶ added in v0.13.0
type EventGuildRoleDelete ¶ added in v0.13.0
type EventGuildRoleDelete struct { GuildID snowflake.ID `json:"guild_id"` RoleID snowflake.ID `json:"role_id"` }
type EventGuildRoleUpdate ¶ added in v0.13.0
type EventGuildScheduledEventCreate ¶ added in v0.13.0
type EventGuildScheduledEventCreate struct {
discord.GuildScheduledEvent
}
type EventGuildScheduledEventDelete ¶ added in v0.13.0
type EventGuildScheduledEventDelete struct {
discord.GuildScheduledEvent
}
type EventGuildScheduledEventUpdate ¶ added in v0.13.0
type EventGuildScheduledEventUpdate struct {
discord.GuildScheduledEvent
}
type EventGuildScheduledEventUserAdd ¶ added in v0.13.0
type EventGuildScheduledEventUserAdd struct { GuildScheduledEventID snowflake.ID `json:"guild_scheduled_event_id"` UserID snowflake.ID `json:"user_id"` GuildID snowflake.ID `json:"guild_id"` }
type EventGuildScheduledEventUserRemove ¶ added in v0.13.0
type EventGuildScheduledEventUserRemove struct { GuildScheduledEventID snowflake.ID `json:"guild_scheduled_event_id"` UserID snowflake.ID `json:"user_id"` GuildID snowflake.ID `json:"guild_id"` }
type EventGuildStickersUpdate ¶ added in v0.13.0
type EventGuildUpdate ¶ added in v0.13.0
type EventGuildUpdate struct {
discord.GatewayGuild
}
type EventHandlerFunc ¶
type EventHandlerFunc func(gatewayEventType EventType, sequenceNumber int, shardID int, event EventData)
EventHandlerFunc is a function that is called when an event is received.
type EventIntegrationCreate ¶ added in v0.13.0
type EventIntegrationCreate struct { discord.Integration GuildID snowflake.ID `json:"guild_id"` }
func (*EventIntegrationCreate) UnmarshalJSON ¶ added in v0.13.0
func (e *EventIntegrationCreate) UnmarshalJSON(data []byte) error
type EventIntegrationDelete ¶ added in v0.13.0
type EventIntegrationDelete struct { ID snowflake.ID `json:"id"` GuildID snowflake.ID `json:"guild_id"` ApplicationID *snowflake.ID `json:"application_id"` }
type EventIntegrationUpdate ¶ added in v0.13.0
type EventIntegrationUpdate struct { discord.Integration GuildID snowflake.ID `json:"guild_id"` }
func (*EventIntegrationUpdate) UnmarshalJSON ¶ added in v0.13.0
func (e *EventIntegrationUpdate) UnmarshalJSON(data []byte) error
type EventInteractionCreate ¶ added in v0.13.0
type EventInteractionCreate struct {
discord.Interaction
}
func (*EventInteractionCreate) UnmarshalJSON ¶ added in v0.13.0
func (e *EventInteractionCreate) UnmarshalJSON(data []byte) error
type EventInviteCreate ¶ added in v0.13.0
type EventInviteDelete ¶ added in v0.13.0
type EventInviteDelete struct { ChannelID snowflake.ID `json:"channel_id"` GuildID *snowflake.ID `json:"guild_id"` Code string `json:"code"` }
type EventMessageCreate ¶ added in v0.13.0
type EventMessageDelete ¶ added in v0.13.0
type EventMessageDelete struct { ID snowflake.ID `json:"id"` ChannelID snowflake.ID `json:"channel_id"` GuildID *snowflake.ID `json:"guild_id,omitempty"` }
type EventMessageDeleteBulk ¶ added in v0.13.0
type EventMessageDeleteBulk struct { IDs []snowflake.ID `json:"id"` ChannelID snowflake.ID `json:"channel_id"` GuildID *snowflake.ID `json:"guild_id,omitempty"` }
type EventMessageReactionAdd ¶ added in v0.13.0
type EventMessageReactionAdd struct { UserID snowflake.ID `json:"user_id"` ChannelID snowflake.ID `json:"channel_id"` MessageID snowflake.ID `json:"message_id"` GuildID *snowflake.ID `json:"guild_id"` Member *discord.Member `json:"member"` Emoji discord.ReactionEmoji `json:"emoji"` }
type EventMessageReactionRemove ¶ added in v0.13.0
type EventMessageReactionRemove struct { UserID snowflake.ID `json:"user_id"` ChannelID snowflake.ID `json:"channel_id"` MessageID snowflake.ID `json:"message_id"` GuildID *snowflake.ID `json:"guild_id"` Emoji discord.ReactionEmoji `json:"emoji"` }
type EventMessageReactionRemoveAll ¶ added in v0.13.0
type EventMessageReactionRemoveAll struct { ChannelID snowflake.ID `json:"channel_id"` MessageID snowflake.ID `json:"message_id"` GuildID *snowflake.ID `json:"guild_id"` }
type EventMessageReactionRemoveEmoji ¶ added in v0.13.0
type EventMessageReactionRemoveEmoji struct { ChannelID snowflake.ID `json:"channel_id"` MessageID snowflake.ID `json:"message_id"` GuildID *snowflake.ID `json:"guild_id"` Emoji discord.ReactionEmoji `json:"emoji"` }
type EventMessageUpdate ¶ added in v0.13.0
type EventPresenceUpdate ¶ added in v0.13.0
type EventReady ¶ added in v0.13.0
type EventReady struct { Version int `json:"v"` User discord.OAuth2User `json:"user"` Guilds []discord.UnavailableGuild `json:"guilds"` SessionID string `json:"session_id"` Shard []int `json:"shard,omitempty"` Application discord.PartialApplication `json:"application"` }
EventReady is the event sent by discord when you successfully Identify
type EventStageInstanceCreate ¶ added in v0.13.0
type EventStageInstanceCreate struct {
discord.StageInstance
}
type EventStageInstanceDelete ¶ added in v0.13.0
type EventStageInstanceDelete struct {
discord.StageInstance
}
type EventStageInstanceUpdate ¶ added in v0.13.0
type EventStageInstanceUpdate struct {
discord.StageInstance
}
type EventThreadCreate ¶ added in v0.13.0
type EventThreadCreate struct { discord.GuildThread ThreadMember discord.ThreadMember `json:"thread_member"` }
type EventThreadDelete ¶ added in v0.13.0
type EventThreadDelete struct { ID snowflake.ID `json:"id"` GuildID snowflake.ID `json:"guild_id"` ParentID snowflake.ID `json:"parent_id"` Type discord.ChannelType `json:"type"` }
type EventThreadListSync ¶ added in v0.13.0
type EventThreadListSync struct { GuildID snowflake.ID `json:"guild_id"` ChannelIDs []snowflake.ID `json:"channel_ids"` Threads []discord.GuildThread `json:"threads"` Members []discord.ThreadMember `json:"members"` }
type EventThreadMemberUpdate ¶ added in v0.13.0
type EventThreadMemberUpdate struct {
discord.ThreadMember
}
type EventThreadMembersUpdate ¶ added in v0.13.0
type EventThreadMembersUpdate struct { ID snowflake.ID `json:"id"` GuildID snowflake.ID `json:"guild_id"` MemberCount int `json:"member_count"` AddedMembers []AddedThreadMember `json:"added_members"` RemovedMemberIDs []snowflake.ID `json:"removed_member_ids"` }
type EventThreadUpdate ¶ added in v0.13.0
type EventThreadUpdate struct {
discord.GuildThread
}
type EventType ¶ added in v0.13.0
type EventType string
EventType wraps all EventType types
const ( // EventTypeRaw is not a real event type, but is used to pass raw payloads to the bot.EventManager EventTypeRaw EventType = "__RAW__" EventTypeReady EventType = "READY" EventTypeResumed EventType = "RESUMED" EventTypeApplicationCommandPermissionsUpdate EventType = "APPLICATION_COMMAND_PERMISSIONS_UPDATE" EventTypeAutoModerationRuleCreate EventType = "AUTO_MODERATION_RULE_CREATE" EventTypeAutoModerationRuleUpdate EventType = "AUTO_MODERATION_RULE_UPDATE" EventTypeAutoModerationRuleDelete EventType = "AUTO_MODERATION_RULE_DELETE" EventTypeAutoModerationActionExecution EventType = "AUTO_MODERATION_ACTION_EXECUTION" EventTypeChannelCreate EventType = "CHANNEL_CREATE" EventTypeChannelUpdate EventType = "CHANNEL_UPDATE" EventTypeChannelDelete EventType = "CHANNEL_DELETE" EventTypeChannelPinsUpdate EventType = "CHANNEL_PINS_UPDATE" EventTypeThreadCreate EventType = "THREAD_CREATE" EventTypeThreadUpdate EventType = "THREAD_UPDATE" EventTypeThreadDelete EventType = "THREAD_DELETE" EventTypeThreadListSync EventType = "THREAD_LIST_SYNC" EventTypeThreadMemberUpdate EventType = "THREAD_MEMBER_UPDATE" EventTypeThreadMembersUpdate EventType = "THREAD_MEMBERS_UPDATE" EventTypeGuildCreate EventType = "GUILD_CREATE" EventTypeGuildUpdate EventType = "GUILD_UPDATE" EventTypeGuildDelete EventType = "GUILD_DELETE" EventTypeGuildBanAdd EventType = "GUILD_BAN_ADD" EventTypeGuildBanRemove EventType = "GUILD_BAN_REMOVE" EventTypeGuildEmojisUpdate EventType = "GUILD_EMOJIS_UPDATE" EventTypeGuildStickersUpdate EventType = "GUILD_STICKERS_UPDATE" EventTypeGuildIntegrationsUpdate EventType = "GUILD_INTEGRATIONS_UPDATE" EventTypeGuildMemberAdd EventType = "GUILD_MEMBER_ADD" EventTypeGuildMemberRemove EventType = "GUILD_MEMBER_REMOVE" EventTypeGuildMemberUpdate EventType = "GUILD_MEMBER_UPDATE" EventTypeGuildMembersChunk EventType = "GUILD_MEMBERS_CHUNK" EventTypeGuildRoleCreate EventType = "GUILD_ROLE_CREATE" EventTypeGuildRoleUpdate EventType = "GUILD_ROLE_UPDATE" EventTypeGuildRoleDelete EventType = "GUILD_ROLE_DELETE" EventTypeGuildScheduledEventCreate EventType = "GUILD_SCHEDULED_EVENT_CREATE" EventTypeGuildScheduledEventUpdate EventType = "GUILD_SCHEDULED_EVENT_UPDATE" EventTypeGuildScheduledEventDelete EventType = "GUILD_SCHEDULED_EVENT_DELETE" EventTypeGuildScheduledEventUserAdd EventType = "GUILD_SCHEDULED_EVENT_USER_ADD" EventTypeGuildScheduledEventUserRemove EventType = "GUILD_SCHEDULED_EVENT_USER_REMOVE" EventTypeIntegrationCreate EventType = "INTEGRATION_CREATE" EventTypeIntegrationUpdate EventType = "INTEGRATION_UPDATE" EventTypeIntegrationDelete EventType = "INTEGRATION_DELETE" EventTypeInteractionCreate EventType = "INTERACTION_CREATE" EventTypeInviteCreate EventType = "INVITE_CREATE" EventTypeInviteDelete EventType = "INVITE_DELETE" EventTypeMessageCreate EventType = "MESSAGE_CREATE" EventTypeMessageUpdate EventType = "MESSAGE_UPDATE" EventTypeMessageDelete EventType = "MESSAGE_DELETE" EventTypeMessageDeleteBulk EventType = "MESSAGE_DELETE_BULK" EventTypeMessageReactionAdd EventType = "MESSAGE_REACTION_ADD" EventTypeMessageReactionRemove EventType = "MESSAGE_REACTION_REMOVE" EventTypeMessageReactionRemoveAll EventType = "MESSAGE_REACTION_REMOVE_ALL" EventTypeMessageReactionRemoveEmoji EventType = "MESSAGE_REACTION_REMOVE_EMOJI" EventTypePresenceUpdate EventType = "PRESENCE_UPDATE" EventTypeStageInstanceCreate EventType = "STAGE_INSTANCE_CREATE" EventTypeStageInstanceDelete EventType = "STAGE_INSTANCE_DELETE" EventTypeStageInstanceUpdate EventType = "STAGE_INSTANCE_UPDATE" EventTypeTypingStart EventType = "TYPING_START" EventTypeUserUpdate EventType = "USER_UPDATE" EventTypeVoiceStateUpdate EventType = "VOICE_STATE_UPDATE" EventTypeVoiceServerUpdate EventType = "VOICE_SERVER_UPDATE" EventTypeWebhooksUpdate EventType = "WEBHOOKS_UPDATE" )
Constants for the gateway events
type EventTypingStart ¶ added in v0.13.0
type EventTypingStart struct { ChannelID snowflake.ID `json:"channel_id"` GuildID *snowflake.ID `json:"guild_id,omitempty"` UserID snowflake.ID `json:"user_id"` Timestamp time.Time `json:"timestamp"` Member *discord.Member `json:"member,omitempty"` User discord.User `json:"user"` }
func (*EventTypingStart) UnmarshalJSON ¶ added in v0.13.0
func (e *EventTypingStart) UnmarshalJSON(data []byte) error
type EventUserUpdate ¶ added in v0.13.0
type EventUserUpdate struct {
discord.OAuth2User
}
type EventVoiceServerUpdate ¶ added in v0.13.0
type EventVoiceStateUpdate ¶ added in v0.13.0
type EventVoiceStateUpdate struct { discord.VoiceState Member discord.Member `json:"member"` }
type EventWebhooksUpdate ¶ added in v0.13.0
type EventWebhooksUpdate struct { GuildID snowflake.ID `json:"guild_id"` ChannelID snowflake.ID `json:"channel_id"` }
type Gateway ¶
type Gateway interface { // Logger returns the logger that is used by the Gateway. Logger() log.Logger // ShardID returns the shard ID that this Gateway is configured to use. ShardID() int // ShardCount returns the total number of shards that this Gateway is configured to use. ShardCount() int // SessionID returns the session ID that is used by this Gateway. // This may be nil if the Gateway was never connected to Discord, was gracefully closed with websocket.CloseNormalClosure or websocket.CloseGoingAway. SessionID() *string // LastSequenceReceived returns the last sequence number that was received by the Gateway. // This may be nil if the Gateway was never connected to Discord, was gracefully closed with websocket.CloseNormalClosure or websocket.CloseGoingAway. LastSequenceReceived() *int // Intents returns the Intents that are used by this Gateway. Intents() Intents // Open connects this Gateway to the Discord API. Open(ctx context.Context) error // Close gracefully closes the Gateway with the websocket.CloseNormalClosure code. // If the context is done, the Gateway connection will be killed. Close(ctx context.Context) // CloseWithCode closes the Gateway with the given code & message. // If the context is done, the Gateway connection will be killed. CloseWithCode(ctx context.Context, code int, message string) // Status returns the Status of the Gateway. Status() Status // Send sends a message to the Discord gateway with the opCode and data. // If context is deadline exceeds, the message sending will be aborted. Send(ctx context.Context, op Opcode, data MessageData) error // Latency returns the latency of the Gateway. // This is calculated by the time it takes to send a heartbeat and receive a heartbeat ack by discord. Latency() time.Duration }
Gateway is what is used to connect to discord.
func New ¶
func New(token string, eventHandlerFunc EventHandlerFunc, closeHandlerFunc CloseHandlerFunc, opts ...ConfigOpt) Gateway
New creates a new Gateway instance with the provided token, eventHandlerFunc, closeHandlerFunc and ConfigOpt(s).
type IdentifyCommandDataProperties ¶ added in v0.13.0
type IdentifyCommandDataProperties struct { OS string `json:"os"` // user OS Browser string `json:"browser"` // library name Device string `json:"device"` // library name }
IdentifyCommandDataProperties is used for specifying to discord which library and OS the bot is using, is automatically handled by the library and should rarely be used.
type Intents ¶ added in v0.13.0
type Intents int64
Intents is an extension of the Bit structure used when identifying with discord
const ( IntentGuilds Intents = 1 << iota IntentGuildMembers IntentGuildBans IntentGuildEmojisAndStickers IntentGuildIntegrations IntentGuildWebhooks IntentGuildInvites IntentGuildVoiceStates IntentGuildPresences IntentGuildMessages IntentGuildMessageReactions IntentGuildMessageTyping IntentDirectMessages IntentDirectMessageReactions IntentDirectMessageTyping IntentMessageContent IntentGuildScheduledEvents IntentAutoModerationConfiguration IntentAutoModerationExecution IntentsGuild = IntentGuilds | IntentGuildMembers | IntentGuildBans | IntentGuildEmojisAndStickers | IntentGuildIntegrations | IntentGuildWebhooks | IntentGuildInvites | IntentGuildVoiceStates | IntentGuildPresences | IntentGuildMessages | IntentGuildMessageReactions | IntentGuildMessageTyping | IntentGuildScheduledEvents IntentsDirectMessage = IntentDirectMessages | IntentDirectMessageReactions | IntentDirectMessageTyping IntentsNonPrivileged = IntentGuilds | IntentGuildBans | IntentGuildEmojisAndStickers | IntentGuildIntegrations | IntentGuildWebhooks | IntentGuildInvites | IntentGuildVoiceStates | IntentGuildMessages | IntentGuildMessageReactions | IntentGuildMessageTyping | IntentDirectMessages | IntentDirectMessageReactions | IntentDirectMessageTyping | IntentGuildScheduledEvents | IntentAutoModerationConfiguration | IntentAutoModerationExecution IntentsPrivileged = IntentGuildMembers | IntentGuildPresences | IntentMessageContent IntentsAll = IntentsNonPrivileged | IntentsPrivileged IntentsDefault = IntentsNone IntentsNone Intents = 0 )
Constants for the different bit offsets of Intents
func (Intents) Add ¶ added in v0.13.0
Add allows you to add multiple bits together, producing a new bit
type Message ¶ added in v0.13.0
type Message struct { Op Opcode `json:"op"` S int `json:"s,omitempty"` T EventType `json:"t,omitempty"` D MessageData `json:"d,omitempty"` RawD json.RawMessage `json:"-"` }
Message raw Message type
func (*Message) UnmarshalJSON ¶ added in v0.13.0
type MessageData ¶ added in v0.13.0
type MessageData interface {
// contains filtered or unexported methods
}
type MessageDataHeartbeat ¶ added in v0.13.0
type MessageDataHeartbeat int
MessageDataHeartbeat is used to ensure the websocket connection remains open, and disconnect if not.
type MessageDataHello ¶ added in v0.13.0
type MessageDataHello struct {
HeartbeatInterval int `json:"heartbeat_interval"`
}
type MessageDataIdentify ¶ added in v0.13.0
type MessageDataIdentify struct { Token string `json:"token"` Properties IdentifyCommandDataProperties `json:"properties"` Compress bool `json:"compress,omitempty"` LargeThreshold int `json:"large_threshold,omitempty"` Shard *[2]int `json:"shard,omitempty"` Intents Intents `json:"intents"` Presence *MessageDataPresenceUpdate `json:"presence,omitempty"` }
MessageDataIdentify is the data used in IdentifyCommandData
type MessageDataInvalidSession ¶ added in v0.13.0
type MessageDataInvalidSession bool
type MessageDataPresenceUpdate ¶ added in v0.13.0
type MessageDataPresenceUpdate struct { Since *int64 `json:"since"` Activities []discord.Activity `json:"activities"` Status discord.OnlineStatus `json:"status"` AFK bool `json:"afk"` }
MessageDataPresenceUpdate is used for updating Client's presence
func NewCompetingPresence ¶ added in v0.13.0
func NewCompetingPresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
NewCompetingPresence creates a new Presence of type ActivityTypeCompeting
func NewGamePresence ¶ added in v0.13.0
func NewGamePresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
NewGamePresence creates a new Presence of type ActivityTypeGame
func NewListeningPresence ¶ added in v0.13.0
func NewListeningPresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
NewListeningPresence creates a new Presence of type ActivityTypeListening
func NewPresence ¶ added in v0.13.0
func NewPresence(activityType discord.ActivityType, name string, url string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
NewPresence creates a new Presence with the provided properties
func NewStreamingPresence ¶ added in v0.13.0
func NewStreamingPresence(name string, url string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
NewStreamingPresence creates a new Presence of type ActivityTypeStreaming
func NewWatchingPresence ¶ added in v0.13.0
func NewWatchingPresence(name string, status discord.OnlineStatus, afk bool) MessageDataPresenceUpdate
NewWatchingPresence creates a new Presence of type ActivityTypeWatching
type MessageDataRequestGuildMembers ¶ added in v0.13.0
type MessageDataRequestGuildMembers struct { GuildID snowflake.ID `json:"guild_id"` Query *string `json:"query,omitempty"` //If specified, user_ids must not be entered Limit *int `json:"limit,omitempty"` //Must be >=1 if query/user_ids is used, otherwise 0 Presences bool `json:"presences,omitempty"` UserIDs []snowflake.ID `json:"user_ids,omitempty"` //If specified, query must not be entered Nonce string `json:"nonce,omitempty"` //All responses are hashed with this nonce, optional }
MessageDataRequestGuildMembers is used for fetching all the members of a guild_events. It is recommended you have a strict member caching policy when using this.
type MessageDataResume ¶ added in v0.13.0
type MessageDataResume struct { Token string `json:"token"` SessionID string `json:"session_id"` Seq int `json:"seq"` }
MessageDataResume is used to resume a connection to discord in the case that you are disconnected. Is automatically handled by the library and should rarely be used.
type MessageDataVoiceStateUpdate ¶ added in v0.13.0
type MessageDataVoiceStateUpdate struct { GuildID snowflake.ID `json:"guild_id"` ChannelID *snowflake.ID `json:"channel_id"` SelfMute bool `json:"self_mute"` SelfDeaf bool `json:"self_deaf"` }
MessageDataVoiceStateUpdate is used for updating the bots voice state in a guild
type Opcode ¶ added in v0.13.0
type Opcode int
Opcode are opcodes used by discord
const ( OpcodeDispatch Opcode = iota OpcodeHeartbeat OpcodeIdentify OpcodePresenceUpdate OpcodeVoiceStateUpdate OpcodeResume OpcodeReconnect OpcodeRequestGuildMembers OpcodeInvalidSession OpcodeHello OpcodeHeartbeatACK )
https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes
type RateLimiter ¶ added in v0.12.0
type RateLimiter interface { // Logger returns the logger used by the RateLimiter. Logger() log.Logger // Close gracefully closes the RateLimiter. // If the context deadline is exceeded, the RateLimiter will be closed immediately. Close(ctx context.Context) // Reset resets the RateLimiter to its initial state. Reset() // Wait waits for the RateLimiter to be ready to send a new message. // If the context deadline is exceeded, Wait will return immediately and no message will be sent. Wait(ctx context.Context) error // Unlock unlocks the RateLimiter and allows the next message to be sent. Unlock() }
RateLimiter provides handles the rate limiting logic for connecting to Discord's Gateway.
func NewRateLimiter ¶ added in v0.12.0
func NewRateLimiter(opts ...RateLimiterConfigOpt) RateLimiter
NewRateLimiter creates a new default RateLimiter with the given RateLimiterConfigOpt(s).
type RateLimiterConfig ¶ added in v0.12.0
RateLimiterConfig lets you configure your Gateway instance.
func DefaultRateLimiterConfig ¶ added in v0.12.0
func DefaultRateLimiterConfig() *RateLimiterConfig
DefaultRateLimiterConfig returns a RateLimiterConfig with sensible defaults.
func (*RateLimiterConfig) Apply ¶ added in v0.12.0
func (c *RateLimiterConfig) Apply(opts []RateLimiterConfigOpt)
Apply applies the given RateLimiterConfigOpt(s) to the RateLimiterConfig
type RateLimiterConfigOpt ¶ added in v0.12.0
type RateLimiterConfigOpt func(config *RateLimiterConfig)
RateLimiterConfigOpt is a type alias for a function that takes a RateLimiterConfig and is used to configure your Server.
func WithCommandsPerMinute ¶ added in v0.12.0
func WithCommandsPerMinute(commandsPerMinute int) RateLimiterConfigOpt
WithCommandsPerMinute sets the number of commands per minute that the Gateway will allow.
func WithRateLimiterLogger ¶ added in v0.12.0
func WithRateLimiterLogger(logger log.Logger) RateLimiterConfigOpt
WithRateLimiterLogger sets the Logger for the Gateway.
type Status ¶
type Status int
Status is the state that the client is currently in.
const ( // StatusUnconnected is the initial state when a new Gateway is created. StatusUnconnected Status = iota // StatusConnecting is the state when the client is connecting to the Discord gateway. StatusConnecting // StatusWaitingForHello is the state when the Gateway is waiting for the first OpcodeHello packet. StatusWaitingForHello // StatusIdentifying is the state when the Gateway received its first OpcodeHello packet and now sends a OpcodeIdentify packet. StatusIdentifying // StatusResuming is the state when the Gateway received its first OpcodeHello packet and now sends a OpcodeResume packet. StatusResuming // StatusWaitingForReady is the state when the Gateway received sent a OpcodeIdentify or OpcodeResume packet and now waits for a OpcodeDispatch with EventTypeReady packet. StatusWaitingForReady // StatusReady is the state when the Gateway received a OpcodeDispatch with EventTypeReady packet. StatusReady // StatusDisconnected is the state when the Gateway is disconnected. // Either due to an error or because the Gateway was closed gracefully. StatusDisconnected )
Indicates how far along the client is too connecting.
func (Status) IsConnected ¶
IsConnected returns whether the Gateway is connected.