Documentation
¶
Index ¶
- func NewEventCollector[E Event](disgo Client, filterFunc func(e E) bool) (<-chan E, func())
- type Client
- type Config
- type ConfigOpt
- func WithCacheConfigOpts(opts ...cache.ConfigOpt) ConfigOpt
- func WithCaches(caches cache.Caches) ConfigOpt
- func WithEventListeners(eventListeners ...EventListener) ConfigOpt
- func WithEventManager(eventManager EventManager) ConfigOpt
- func WithEventManagerConfigOpts(opts ...EventManagerConfigOpt) ConfigOpt
- func WithGateway(gateway gateway.Gateway) ConfigOpt
- func WithGatewayConfigOpts(opts ...gateway.ConfigOpt) ConfigOpt
- func WithHTTPServer(httpServer httpserver.Server) ConfigOpt
- func WithHTTPServerConfigOpts(opts ...httpserver.ConfigOpt) ConfigOpt
- func WithLogger(logger log.Logger) ConfigOpt
- func WithMemberChunkingFilter(memberChunkingFilter MemberChunkingFilter) ConfigOpt
- func WithMemberChunkingManager(memberChunkingManager MemberChunkingManager) ConfigOpt
- func WithRest(rest rest.Rest) ConfigOpt
- func WithRestClient(restClient rest.Client) ConfigOpt
- func WithRestClientConfigOpts(opts ...rest.ConfigOpt) ConfigOpt
- func WithShardManager(shardManager sharding.ShardManager) ConfigOpt
- func WithShardManagerConfigOpts(opts ...sharding.ConfigOpt) ConfigOpt
- type Event
- type EventListener
- type EventManager
- type EventManagerConfig
- type EventManagerConfigOpt
- func WithAsyncEventsEnabled() EventManagerConfigOpt
- func WithGatewayHandlers(handlers map[discord.GatewayEventType]GatewayEventHandler) EventManagerConfigOpt
- func WithHTTPServerHandler(handler HTTPServerEventHandler) EventManagerConfigOpt
- func WithListeners(listeners ...EventListener) EventManagerConfigOpt
- func WithRawEventsEnabled() EventManagerConfigOpt
- type GatewayEventHandler
- type HTTPServerEventHandler
- type MemberChunkingFilter
- type MemberChunkingManager
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewEventCollector ¶
NewEventCollector returns a channel in which the events of type T gets sent which pass the passed filter and a function which can be used to stop the event collector. The close function needs to be called to stop the event collector.
Types ¶
type Client ¶
type Client interface {
Logger() log.Logger
// Close will clean up all disgo internals and close the discord gracefully.
Close(ctx context.Context)
// Token returns the configured bot token.
Token() string
// ApplicationID returns the application id.
ApplicationID() snowflake.ID
// ID returns the bot id.
ID() snowflake.ID
// Caches returns the cache.Caches used by the Client.
Caches() cache.Caches
// Rest returns the rest.Rest used by the Client.
Rest() rest.Rest
AddEventListeners(listeners ...EventListener)
RemoveEventListeners(listeners ...EventListener)
// EventManager returns the EventManager used by the Client.
EventManager() EventManager
// ConnectGateway connects to the configured gateway.Gateway.
ConnectGateway(ctx context.Context) error
// Gateway returns the gateway.Gateway used by the Client.
Gateway() gateway.Gateway
// HasGateway returns whether the Client has a configured gateway.Gateway.
HasGateway() bool
// ConnectShardManager connects to the configured sharding.ShardManager.
ConnectShardManager(ctx context.Context) error
// ShardManager returns the sharding.ShardManager used by the Client.
ShardManager() sharding.ShardManager
// HasShardManager returns whether the Client has a configured sharding.ShardManager.
HasShardManager() bool
// Shard returns the gateway.Gateway the specific guildID runs on.
Shard(guildID snowflake.ID) (gateway.Gateway, error)
// Connect sends a discord.GatewayMessageDataVoiceStateUpdate to the specific gateway.Gateway and connects the bot to the specified channel.
Connect(ctx context.Context, guildID snowflake.ID, channelID snowflake.ID) error
// Disconnect sends a discord.GatewayMessageDataVoiceStateUpdate to the specific gateway.Gateway and disconnects the bot from this guild.
Disconnect(ctx context.Context, guildID snowflake.ID) error
// RequestMembers sends a discord.GatewayMessageDataRequestGuildMembers to the specific gateway.Gateway and requests the Member(s) of the specified guild.
// guildID : is the snowflake of the guild to request the members of.
// presence : Weather or not to include discord.Presence data.
// nonce : The nonce to return to the discord.GatewayEventGuildMembersChunk.
// userIDs : The snowflakes of the users to request the members of.
RequestMembers(ctx context.Context, guildID snowflake.ID, presence bool, nonce string, userIDs ...snowflake.ID) error
// RequestMembersWithQuery sends a discord.GatewayMessageDataRequestGuildMembers to the specific gateway.Gateway and requests the Member(s) of the specified guild.
// guildID : is the snowflake of the guild to request the members of.
// presence : Weather or not to include discord.Presence data.
// nonce : The nonce to return to the discord.GatewayEventGuildMembersChunk.
// query : The query to use for the request.
// limit : The number of discord.Member(s) to return.
RequestMembersWithQuery(ctx context.Context, guildID snowflake.ID, presence bool, nonce string, query string, limit int) error
// SetPresence sends a discord.GatewayMessageDataPresenceUpdate to the gateway.Gateway.
SetPresence(ctx context.Context, presenceUpdate discord.GatewayMessageDataPresenceUpdate) error
// SetPresenceForShard sends a discord.GatewayMessageDataPresenceUpdate to the specific gateway.Gateway.
SetPresenceForShard(ctx context.Context, shardId int, presenceUpdate discord.GatewayMessageDataPresenceUpdate) error
// MemberChunkingManager returns the MemberChunkingManager used by the Client.
MemberChunkingManager() MemberChunkingManager
// StartHTTPServer starts the configured HTTPServer used for interactions over webhooks.
StartHTTPServer() error
// HTTPServer returns the configured HTTPServer used for interactions over webhooks.
HTTPServer() httpserver.Server
// HasHTTPServer returns whether the Client has a configured HTTPServer.
HasHTTPServer() bool
}
func BuildClient ¶
func BuildClient(token string, config Config, gatewayEventHandlerFunc func(client Client) gateway.EventHandlerFunc, httpServerEventHandlerFunc func(client Client) httpserver.EventHandlerFunc, os string, name string, github string, version string) (Client, error)
type Config ¶
type Config struct {
Logger log.Logger
RestClient rest.Client
RestClientConfigOpts []rest.ConfigOpt
Rest rest.Rest
EventManager EventManager
EventManagerConfigOpts []EventManagerConfigOpt
Gateway gateway.Gateway
GatewayConfigOpts []gateway.ConfigOpt
ShardManager sharding.ShardManager
ShardManagerConfigOpts []sharding.ConfigOpt
HTTPServer httpserver.Server
HTTPServerConfigOpts []httpserver.ConfigOpt
Caches cache.Caches
CacheConfigOpts []cache.ConfigOpt
MemberChunkingManager MemberChunkingManager
MemberChunkingFilter MemberChunkingFilter
}
Config lets you configure your Client instance Config is the core.Client config used to configure everything
func DefaultConfig ¶
func DefaultConfig(gatewayHandlers map[discord.GatewayEventType]GatewayEventHandler, httpHandler HTTPServerEventHandler) *Config
type ConfigOpt ¶
type ConfigOpt func(config *Config)
func WithCacheConfigOpts ¶
func WithCaches ¶
func WithEventListeners ¶
func WithEventListeners(eventListeners ...EventListener) ConfigOpt
func WithEventManager ¶
func WithEventManager(eventManager EventManager) ConfigOpt
func WithEventManagerConfigOpts ¶
func WithEventManagerConfigOpts(opts ...EventManagerConfigOpt) ConfigOpt
func WithGateway ¶
func WithGatewayConfigOpts ¶
func WithHTTPServer ¶
func WithHTTPServer(httpServer httpserver.Server) ConfigOpt
func WithHTTPServerConfigOpts ¶
func WithHTTPServerConfigOpts(opts ...httpserver.ConfigOpt) ConfigOpt
func WithLogger ¶
WithLogger lets you inject your own logger implementing log.Logger
func WithMemberChunkingFilter ¶
func WithMemberChunkingFilter(memberChunkingFilter MemberChunkingFilter) ConfigOpt
func WithMemberChunkingManager ¶
func WithMemberChunkingManager(memberChunkingManager MemberChunkingManager) ConfigOpt
func WithRestClient ¶
func WithShardManager ¶
func WithShardManager(shardManager sharding.ShardManager) ConfigOpt
type EventListener ¶
type EventListener interface {
OnEvent(event Event)
}
EventListener is used to create new EventListener to listen to events
type EventManager ¶
type EventManager interface {
// RawEventsEnabled returns whether events.RawEvent are enabled
RawEventsEnabled() bool
// AddEventListeners adds one or more EventListener(s) to the EventManager
AddEventListeners(eventListeners ...EventListener)
// RemoveEventListeners removes one or more EventListener(s) from the EventManager
RemoveEventListeners(eventListeners ...EventListener)
// HandleGatewayEvent calls the correct GatewayEventHandler for the payload
HandleGatewayEvent(gatewayEventType discord.GatewayEventType, sequenceNumber int, payload io.Reader)
// HandleHTTPEvent calls the HTTPServerEventHandler for the payload
HandleHTTPEvent(respondFunc httpserver.RespondFunc, payload io.Reader)
// DispatchEvent dispatches a new Event to the Client's EventListener(s)
DispatchEvent(event Event)
}
EventManager lets you listen for specific events triggered by raw gateway events
func NewEventManager ¶
func NewEventManager(client Client, opts ...EventManagerConfigOpt) EventManager
NewEventManager returns a new EventManager with the EventManagerConfigOpt(s) applied.
type EventManagerConfig ¶
type EventManagerConfig struct {
EventListeners []EventListener
RawEventsEnabled bool
AsyncEventsEnabled bool
GatewayHandlers map[discord.GatewayEventType]GatewayEventHandler
HTTPServerHandler HTTPServerEventHandler
}
EventManagerConfig can be used to configure the EventManager.
func DefaultEventManagerConfig ¶
func DefaultEventManagerConfig() *EventManagerConfig
DefaultEventManagerConfig returns a new EventManagerConfig with all default values.
func (*EventManagerConfig) Apply ¶
func (c *EventManagerConfig) Apply(opts []EventManagerConfigOpt)
Apply applies the given EventManagerConfigOpt(s) to the EventManagerConfig.
type EventManagerConfigOpt ¶
type EventManagerConfigOpt func(config *EventManagerConfig)
EventManagerConfigOpt is a functional option for configuring an EventManager.
func WithAsyncEventsEnabled ¶
func WithAsyncEventsEnabled() EventManagerConfigOpt
func WithGatewayHandlers ¶
func WithGatewayHandlers(handlers map[discord.GatewayEventType]GatewayEventHandler) EventManagerConfigOpt
func WithHTTPServerHandler ¶
func WithHTTPServerHandler(handler HTTPServerEventHandler) EventManagerConfigOpt
func WithListeners ¶
func WithListeners(listeners ...EventListener) EventManagerConfigOpt
WithListeners adds the given EventListener(s) to the EventManagerConfig.
func WithRawEventsEnabled ¶
func WithRawEventsEnabled() EventManagerConfigOpt
type GatewayEventHandler ¶
type GatewayEventHandler interface {
EventType() discord.GatewayEventType
New() any
HandleGatewayEvent(client Client, sequenceNumber int, v any)
}
GatewayEventHandler is used to handle Gateway Event(s)
type HTTPServerEventHandler ¶
type HTTPServerEventHandler interface {
New() any
HandleHTTPEvent(client Client, respondFunc func(response discord.InteractionResponse) error, v any)
}
HTTPServerEventHandler is used to handle HTTP Event(s)
type MemberChunkingFilter ¶
MemberChunkingFilter is a filter that can be used to filter from which guilds to request members from.
var ( MemberChunkingFilterAll MemberChunkingFilter = func(_ snowflake.ID) bool { return true } MemberChunkingFilterNone MemberChunkingFilter = func(_ snowflake.ID) bool { return false } )
func (MemberChunkingFilter) Exclude ¶
func (f MemberChunkingFilter) Exclude(guildIDs ...snowflake.ID) MemberChunkingFilter
Exclude excludes the given guilds from being chunked.
func (MemberChunkingFilter) Include ¶
func (f MemberChunkingFilter) Include(guildIDs ...snowflake.ID) MemberChunkingFilter
Include includes the given guilds from being chunked.
type MemberChunkingManager ¶
type MemberChunkingManager interface {
// MemberChunkingFilter returns the configured MemberChunkingFilter used by this MemberChunkingManager.
MemberChunkingFilter() MemberChunkingFilter
// HandleChunk handles the discord.GatewayEventGuildMembersChunk event payloads from the discord gateway.
HandleChunk(payload discord.GatewayEventGuildMembersChunk)
RequestMembers(guildID snowflake.ID, userIDs ...snowflake.ID) ([]discord.Member, error)
RequestMembersWithQuery(guildID snowflake.ID, query string, limit int) ([]discord.Member, error)
RequestMembersWithFilter(guildID snowflake.ID, memberFilterFunc func(member discord.Member) bool) ([]discord.Member, error)
RequestMembersCtx(ctx context.Context, guildID snowflake.ID, userIDs ...snowflake.ID) ([]discord.Member, error)
RequestMembersWithQueryCtx(ctx context.Context, guildID snowflake.ID, query string, limit int) ([]discord.Member, error)
RequestMembersWithFilterCtx(ctx context.Context, guildID snowflake.ID, memberFilterFunc func(member discord.Member) bool) ([]discord.Member, error)
RequestMembersChan(guildID snowflake.ID, userIDs ...snowflake.ID) (<-chan discord.Member, func(), error)
RequestMembersWithQueryChan(guildID snowflake.ID, query string, limit int) (<-chan discord.Member, func(), error)
RequestMembersWithFilterChan(guildID snowflake.ID, memberFilterFunc func(member discord.Member) bool) (<-chan discord.Member, func(), error)
}
MemberChunkingManager is used to request members for guilds from the discord gateway.
func NewMemberChunkingManager ¶
func NewMemberChunkingManager(client Client, memberChunkingFilter MemberChunkingFilter) MemberChunkingManager
NewMemberChunkingManager returns a new MemberChunkingManager with the given MemberChunkingFilter.