Documentation
¶
Index ¶
- 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
- 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 ¶
type MemberChunkingFilter func(guildID snowflake.ID) bool
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.