Documentation
¶
Index ¶
- Variables
- func MemberChunkingFilterAll(_ snowflake.ID) bool
- func MemberChunkingFilterDefault(guildID snowflake.ID) bool
- func MemberChunkingFilterNone(_ snowflake.ID) bool
- func NewEventCollector[E Event](client *Client, filterFunc func(e E) bool) (<-chan E, func())
- func WaitForEvent[E Event](client *Client, ctx context.Context, filterFunc func(e E) bool, ...)
- type Client
- func (c *Client) AddEventListeners(listeners ...EventListener)
- func (c *Client) Close(ctx context.Context)
- func (c *Client) HasGateway() bool
- func (c *Client) HasHTTPServer() bool
- func (c *Client) HasShardManager() bool
- func (c *Client) ID() snowflake.ID
- func (c *Client) OpenGateway(ctx context.Context) error
- func (c *Client) OpenHTTPServer() error
- func (c *Client) OpenShardManager(ctx context.Context) error
- func (c *Client) RemoveEventListeners(listeners ...EventListener)
- func (c *Client) RequestMembers(ctx context.Context, guildID snowflake.ID, presence bool, nonce string, ...) error
- func (c *Client) RequestMembersWithQuery(ctx context.Context, guildID snowflake.ID, presence bool, nonce string, ...) error
- func (c *Client) RequestSoundboardSounds(ctx context.Context, guildIDs ...snowflake.ID) error
- func (c *Client) SetPresence(ctx context.Context, opts ...gateway.PresenceOpt) error
- func (c *Client) SetPresenceForShard(ctx context.Context, shardId int, opts ...gateway.PresenceOpt) error
- func (c *Client) Shard(guildID snowflake.ID) (gateway.Gateway, error)
- func (c *Client) UpdateVoiceState(ctx context.Context, guildID snowflake.ID, channelID *snowflake.ID, ...) error
- type ConfigOpt
- func WithCacheConfigOpts(opts ...cache.ConfigOpt) ConfigOpt
- func WithCaches(caches cache.Caches) ConfigOpt
- func WithDefaultGateway() ConfigOpt
- func WithDefaultShardManager() ConfigOpt
- func WithEventListenerChan[E Event](c chan<- E) ConfigOpt
- func WithEventListenerFunc[E Event](f func(e E)) 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(publicKey string, opts ...httpserver.ConfigOpt) ConfigOpt
- func WithLogger(logger *slog.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.ClientConfigOpt) ConfigOpt
- func WithRestConfigOpts(opts ...rest.ConfigOpt) ConfigOpt
- func WithShardManager(shardManager sharding.ShardManager) ConfigOpt
- func WithShardManagerConfigOpts(opts ...sharding.ConfigOpt) ConfigOpt
- func WithVoiceManager(voiceManager voice.Manager) ConfigOpt
- func WithVoiceManagerConfigOpts(opts ...voice.ManagerConfigOpt) ConfigOpt
- type Event
- type EventListener
- type EventManager
- type EventManagerConfigOpt
- func WithAsyncEventsEnabled() EventManagerConfigOpt
- func WithEventManagerLogger(logger *slog.Logger) EventManagerConfigOpt
- func WithGatewayHandlers(handlers map[gateway.EventType]GatewayEventHandler) EventManagerConfigOpt
- func WithHTTPServerHandler(handler HTTPServerEventHandler) EventManagerConfigOpt
- func WithListenerChan[E Event](c chan<- E) EventManagerConfigOpt
- func WithListenerFunc[E Event](f func(e E)) EventManagerConfigOpt
- func WithListeners(listeners ...EventListener) EventManagerConfigOpt
- type GatewayEventHandler
- type HTTPServerEventHandler
- type MemberChunkingFilter
- func AllMemberChunkingFilters(filters ...MemberChunkingFilter) MemberChunkingFilter
- func AnyMemberChunkingFilter(filters ...MemberChunkingFilter) MemberChunkingFilter
- func MemberChunkingFilterExcludeGuildIDs(guildIDs ...snowflake.ID) MemberChunkingFilter
- func MemberChunkingFilterIncludeGuildIDs(guildIDs ...snowflake.ID) MemberChunkingFilter
- type MemberChunkingManager
Constants ¶
This section is empty.
Variables ¶
var ErrNoUserIDs = errors.New("no user ids to request")
ErrNoUserIDs is returned when no user IDs are provided to request members.
Functions ¶
func MemberChunkingFilterAll ¶
MemberChunkingFilterAll is a MemberChunkingFilter which includes all guilds.
func MemberChunkingFilterDefault ¶ added in v0.12.0
MemberChunkingFilterDefault is the default MemberChunkingFilter.
func MemberChunkingFilterNone ¶
MemberChunkingFilterNone is a MemberChunkingFilter which excludes all guilds.
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.
func WaitForEvent ¶ added in v0.10.3
func WaitForEvent[E Event](client *Client, ctx context.Context, filterFunc func(e E) bool, actionFunc func(e E), cancelFunc func())
WaitForEvent waits for an event passing the filterFunc and then calls the actionFunc. You can cancel this function with the passed context.Context and the cancelFunc gets called then.
Types ¶
type Client ¶
type Client struct {
Token string
ApplicationID snowflake.ID
Logger *slog.Logger
Rest rest.Rest
EventManager EventManager
ShardManager sharding.ShardManager
Gateway gateway.Gateway
HTTPServer httpserver.Server
VoiceManager voice.Manager
Caches cache.Caches
MemberChunkingManager MemberChunkingManager
}
Client is a high level struct for interacting with Discord's API. It combines the functionality of the rest, gateway/sharding, httpserver and cache into one easy to use package. Create a new client with disgo.New.
func BuildClient ¶
func BuildClient( token string, otps []ConfigOpt, gatewayHandlers map[gateway.EventType]GatewayEventHandler, httpHandler HTTPServerEventHandler, os string, name string, github string, version string, ) (*Client, error)
BuildClient creates a new Client instance with the given Token, config, Gateway handlers, http handlers os, name, github & version.
func (*Client) AddEventListeners ¶
func (c *Client) AddEventListeners(listeners ...EventListener)
func (*Client) HasGateway ¶
func (*Client) HasHTTPServer ¶
func (*Client) HasShardManager ¶
func (*Client) OpenGateway ¶ added in v0.13.3
func (*Client) OpenHTTPServer ¶ added in v0.13.3
func (*Client) OpenShardManager ¶ added in v0.13.3
func (*Client) RemoveEventListeners ¶
func (c *Client) RemoveEventListeners(listeners ...EventListener)
func (*Client) RequestMembers ¶
func (*Client) RequestMembersWithQuery ¶
func (*Client) RequestSoundboardSounds ¶ added in v0.18.13
func (*Client) SetPresence ¶
func (*Client) SetPresenceForShard ¶
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 Client.
func WithCacheConfigOpts ¶
WithCacheConfigOpts lets you configure the default cache.Caches.
func WithCaches ¶
WithCaches lets you inject your own cache.Caches.
func WithDefaultGateway ¶ added in v0.13.3
func WithDefaultGateway() ConfigOpt
WithDefaultGateway creates a gateway.Gateway with sensible defaults.
func WithDefaultShardManager ¶ added in v0.13.3
func WithDefaultShardManager() ConfigOpt
WithDefaultShardManager creates a sharding.ShardManager with sensible defaults.
func WithEventListenerChan ¶ added in v0.13.15
WithEventListenerChan adds the given chan<- E to the default EventManager.
func WithEventListenerFunc ¶ added in v0.11.2
WithEventListenerFunc adds the given func(e E) to the default EventManager.
func WithEventListeners ¶
func WithEventListeners(eventListeners ...EventListener) ConfigOpt
WithEventListeners adds the given EventListener(s) to the default EventManager.
func WithEventManager ¶
func WithEventManager(eventManager EventManager) ConfigOpt
WithEventManager lets you inject your own EventManager.
func WithEventManagerConfigOpts ¶
func WithEventManagerConfigOpts(opts ...EventManagerConfigOpt) ConfigOpt
WithEventManagerConfigOpts lets you configure the default EventManager.
func WithGateway ¶
WithGateway lets you inject your own gateway.Gateway.
func WithGatewayConfigOpts ¶
WithGatewayConfigOpts lets you configure the default gateway.Gateway.
func WithHTTPServer ¶
func WithHTTPServer(httpServer httpserver.Server) ConfigOpt
WithHTTPServer lets you inject your own httpserver.Server.
func WithHTTPServerConfigOpts ¶
func WithHTTPServerConfigOpts(publicKey string, opts ...httpserver.ConfigOpt) ConfigOpt
WithHTTPServerConfigOpts lets you configure the default httpserver.Server.
func WithLogger ¶
WithLogger lets you inject your own Logger implementing *slog.Logger.
func WithMemberChunkingFilter ¶
func WithMemberChunkingFilter(memberChunkingFilter MemberChunkingFilter) ConfigOpt
WithMemberChunkingFilter lets you configure the default MemberChunkingFilter.
func WithMemberChunkingManager ¶
func WithMemberChunkingManager(memberChunkingManager MemberChunkingManager) ConfigOpt
WithMemberChunkingManager lets you inject your own MemberChunkingManager.
func WithRestClient ¶
WithRestClient lets you inject your own rest.Client.
func WithRestClientConfigOpts ¶
func WithRestClientConfigOpts(opts ...rest.ClientConfigOpt) ConfigOpt
WithRestClientConfigOpts let's you configure the default rest.Client.
func WithRestConfigOpts ¶ added in v0.19.0
WithRestConfigOpts lets you configure the default rest.Rest.
func WithShardManager ¶
func WithShardManager(shardManager sharding.ShardManager) ConfigOpt
WithShardManager lets you inject your own sharding.ShardManager.
func WithShardManagerConfigOpts ¶
WithShardManagerConfigOpts lets you configure the default sharding.ShardManager.
func WithVoiceManager ¶ added in v0.19.0
func WithVoiceManagerConfigOpts ¶ added in v0.19.0
func WithVoiceManagerConfigOpts(opts ...voice.ManagerConfigOpt) ConfigOpt
type EventListener ¶
type EventListener interface {
OnEvent(event Event)
}
EventListener is used to create new EventListener to listen to events
func NewListenerChan ¶ added in v0.13.15
func NewListenerChan[E Event](c chan<- E) EventListener
NewListenerChan returns a new EventListener for the given chan<- Event
func NewListenerFunc ¶ added in v0.11.2
func NewListenerFunc[E Event](f func(e E)) EventListener
NewListenerFunc returns a new EventListener for the given func(e E)
type EventManager ¶
type EventManager interface {
// 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(gateway gateway.Gateway, eventType gateway.EventType, sequenceNumber int, event gateway.EventData)
// HandleHTTPEvent calls the HTTPServerEventHandler for the payload
HandleHTTPEvent(respondFunc httpserver.RespondFunc, event httpserver.EventInteractionCreate)
// 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 EventManagerConfigOpt ¶
type EventManagerConfigOpt func(config *eventManagerConfig)
EventManagerConfigOpt is a functional option for configuring an EventManager.
func WithAsyncEventsEnabled ¶
func WithAsyncEventsEnabled() EventManagerConfigOpt
WithAsyncEventsEnabled enables/disables the async events.
func WithEventManagerLogger ¶ added in v0.13.10
func WithEventManagerLogger(logger *slog.Logger) EventManagerConfigOpt
WithEventManagerLogger overrides the default Logger in the eventManagerConfig.
func WithGatewayHandlers ¶
func WithGatewayHandlers(handlers map[gateway.EventType]GatewayEventHandler) EventManagerConfigOpt
WithGatewayHandlers overrides the default GatewayEventHandler(s) in the eventManagerConfig.
func WithHTTPServerHandler ¶
func WithHTTPServerHandler(handler HTTPServerEventHandler) EventManagerConfigOpt
WithHTTPServerHandler overrides the given HTTPServerEventHandler in the eventManagerConfig.
func WithListenerChan ¶ added in v0.13.15
func WithListenerChan[E Event](c chan<- E) EventManagerConfigOpt
WithListenerChan adds the given chan<- E to the eventManagerConfig.
func WithListenerFunc ¶ added in v0.11.2
func WithListenerFunc[E Event](f func(e E)) EventManagerConfigOpt
WithListenerFunc adds the given func(e E) to the eventManagerConfig.
func WithListeners ¶
func WithListeners(listeners ...EventListener) EventManagerConfigOpt
WithListeners adds the given EventListener(s) to the eventManagerConfig.
type GatewayEventHandler ¶
type GatewayEventHandler interface {
EventType() gateway.EventType
HandleGatewayEvent(client *Client, sequenceNumber int, shardID int, event gateway.EventData)
}
GatewayEventHandler is used to handle Gateway Event(s)
func NewGatewayEventHandler ¶ added in v0.13.0
func NewGatewayEventHandler[T gateway.EventData](eventType gateway.EventType, handleFunc func(client *Client, sequenceNumber int, shardID int, event T)) GatewayEventHandler
NewGatewayEventHandler returns a new GatewayEventHandler for the given gateway.EventType and handler func
type HTTPServerEventHandler ¶
type HTTPServerEventHandler interface {
HandleHTTPEvent(client *Client, respondFunc httpserver.RespondFunc, event httpserver.EventInteractionCreate)
}
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.
func AllMemberChunkingFilters ¶ added in v0.12.0
func AllMemberChunkingFilters(filters ...MemberChunkingFilter) MemberChunkingFilter
AllMemberChunkingFilters is a shorthand for MemberChunkingFilter.And(MemberChunkingFilter).And(MemberChunkingFilter) etc.
func AnyMemberChunkingFilter ¶ added in v0.12.0
func AnyMemberChunkingFilter(filters ...MemberChunkingFilter) MemberChunkingFilter
AnyMemberChunkingFilter is a shorthand for MemberChunkingFilter.Or(MemberChunkingFilter).Or(MemberChunkingFilter) etc.
func MemberChunkingFilterExcludeGuildIDs ¶ added in v0.11.0
func MemberChunkingFilterExcludeGuildIDs(guildIDs ...snowflake.ID) MemberChunkingFilter
MemberChunkingFilterExcludeGuildIDs returns a MemberChunkingFilter which excludes the given guildIDs.
func MemberChunkingFilterIncludeGuildIDs ¶ added in v0.11.0
func MemberChunkingFilterIncludeGuildIDs(guildIDs ...snowflake.ID) MemberChunkingFilter
MemberChunkingFilterIncludeGuildIDs returns a MemberChunkingFilter which includes the given guildIDs.
func (MemberChunkingFilter) And ¶ added in v0.11.0
func (f MemberChunkingFilter) And(filter MemberChunkingFilter) MemberChunkingFilter
And allows you to require both MemberChunkingFilter(s) to be true for the guild to be chunked
func (MemberChunkingFilter) Or ¶ added in v0.11.0
func (f MemberChunkingFilter) Or(filter MemberChunkingFilter) MemberChunkingFilter
Or allows you to combine the MemberChunkingFilter with another, meaning either of them needs to be true for the guild to be chunked.
type MemberChunkingManager ¶
type MemberChunkingManager interface {
// MemberChunkingFilter returns the configured MemberChunkingFilter used by this MemberChunkingManager.
MemberChunkingFilter() MemberChunkingFilter
// HandleChunk handles the discord.EventGuildMembersChunk event payloads from the discord Gateway.
HandleChunk(payload gateway.EventGuildMembersChunk)
// RequestMembers requests members from the given guildID and userIDs.
// Notice: This action requires the gateway.IntentGuildMembers.
RequestMembers(ctx context.Context, guildID snowflake.ID, userIDs ...snowflake.ID) ([]discord.Member, error)
// RequestAllMembers requests all members from the given guildID.
// Notice: This action requires the gateway.IntentGuildMembers.
RequestAllMembers(ctx context.Context, guildID snowflake.ID) ([]discord.Member, error)
// RequestMembersWithQuery requests members from the given guildID and query.
// query : string the username starts with
// Notice: This action requires the gateway.IntentGuildMembers.
RequestMembersWithQuery(ctx context.Context, guildID snowflake.ID, query string, limit int) ([]discord.Member, error)
// RequestMembersWithFilter requests members from the given guildID and userIDs. memberFilterFunc is used to filter all returned members.
// Notice: This action requires the gateway.IntentGuildMembers.
RequestMembersWithFilter(ctx context.Context, guildID snowflake.ID, memberFilterFunc func(member discord.Member) bool) ([]discord.Member, error)
// RequestMembersChan requests members from the given guildID and userIDs.
// Returns a channel which will receive the members.
// Returns a function which can be used to cancel the request and close the channel.
// Notice: This action requires the gateway.IntentGuildMembers.
RequestMembersChan(guildID snowflake.ID, userIDs ...snowflake.ID) (<-chan discord.Member, func(), error)
// RequestAllMembersChan requests all members from the given guildID.
// Returns a channel which will receive the members.
// Returns a function which can be used to cancel the request and close the channel.
// Notice: This action requires the gateway.IntentGuildMembers.
RequestAllMembersChan(guildID snowflake.ID) (<-chan discord.Member, func(), error)
// RequestMembersWithQueryChan requests members from the given guildID and query.
// Returns a channel which will receive the members.
// Returns a function which can be used to cancel the request and close the channel.
// Notice: This action requires the gateway.IntentGuildMembers.
RequestMembersWithQueryChan(guildID snowflake.ID, query string, limit int) (<-chan discord.Member, func(), error)
// RequestMembersWithFilterChan requests members from the given guildID and userIDs. memberFilterFunc is used to filter all returned members.
// Returns a channel which will receive the members.
// Returns a function which can be used to cancel the request and close the channel.
// Notice: This action requires the gateway.IntentGuildMembers.
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, logger *slog.Logger, memberChunkingFilter MemberChunkingFilter) MemberChunkingManager
NewMemberChunkingManager returns a new MemberChunkingManager with the given MemberChunkingFilter.