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 gives you a channel to receive on and a function to close the collector
Types ¶
type Client ¶
type Client interface {
Logger() log.Logger
Close(ctx context.Context)
Token() string
ApplicationID() snowflake.Snowflake
ID() snowflake.Snowflake
SelfUser() *discord.OAuth2User
SetSelfUser(user discord.OAuth2User)
SelfMember(guildID snowflake.Snowflake) *discord.Member
Caches() cache.Caches
Rest() rest.Rest
HandleReadyEvent(event discord.GatewayEventReady)
AddEventListeners(listeners ...EventListener)
RemoveEventListeners(listeners ...EventListener)
EventManager() EventManager
ConnectGateway(ctx context.Context) error
Gateway() gateway.Gateway
HasGateway() bool
ConnectShardManager(ctx context.Context) error
ShardManager() sharding.ShardManager
HasShardManager() bool
Shard(guildID snowflake.Snowflake) (gateway.Gateway, error)
Connect(ctx context.Context, guildID snowflake.Snowflake, channelID snowflake.Snowflake) error
Disconnect(ctx context.Context, guildID snowflake.Snowflake) error
RequestMembers(ctx context.Context, guildID snowflake.Snowflake, presence bool, nonce string, userIDs ...snowflake.Snowflake) error
RequestMembersWithQuery(ctx context.Context, guildID snowflake.Snowflake, presence bool, nonce string, query string, limit int) error
SetPresence(ctx context.Context, presenceUpdate discord.GatewayMessageDataPresenceUpdate) error
SetPresenceForShard(ctx context.Context, shardId int, presenceUpdate discord.GatewayMessageDataPresenceUpdate) error
MemberChunkingManager() MemberChunkingManager
StartHTTPServer() error
HTTPServer() httpserver.Server
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() bool
AddEventListeners(eventListeners ...EventListener)
RemoveEventListeners(eventListeners ...EventListener)
HandleGatewayEvent(gatewayEventType discord.GatewayEventType, sequenceNumber int, payload io.Reader)
HandleHTTPEvent(responseChannel chan<- discord.InteractionResponse, payload io.Reader)
DispatchEvent(event Event)
}
EventManager lets you listen for specific events triggered by raw gateway events
func NewEventManager ¶
func NewEventManager(client Client, opts ...EventManagerConfigOpt) EventManager
type EventManagerConfig ¶
type EventManagerConfig struct {
EventListeners []EventListener
RawEventsEnabled bool
AsyncEventsEnabled bool
GatewayHandlers map[discord.GatewayEventType]GatewayEventHandler
HTTPServerHandler HTTPServerEventHandler
}
func DefaultEventManagerConfig ¶
func DefaultEventManagerConfig() *EventManagerConfig
func (*EventManagerConfig) Apply ¶
func (c *EventManagerConfig) Apply(opts []EventManagerConfigOpt)
type EventManagerConfigOpt ¶
type EventManagerConfigOpt func(config *EventManagerConfig)
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
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, responseChannel chan<- discord.InteractionResponse, v any)
}
HTTPServerEventHandler is used to handle HTTP Event(s)
type MemberChunkingFilter ¶
var ( MemberChunkingFilterAll MemberChunkingFilter = func(_ snowflake.Snowflake) bool { return true } MemberChunkingFilterNone MemberChunkingFilter = func(_ snowflake.Snowflake) bool { return false } )
func (MemberChunkingFilter) Exclude ¶
func (f MemberChunkingFilter) Exclude(guildIDs ...snowflake.Snowflake) MemberChunkingFilter
func (MemberChunkingFilter) Include ¶
func (f MemberChunkingFilter) Include(guildIDs ...snowflake.Snowflake) MemberChunkingFilter
type MemberChunkingManager ¶
type MemberChunkingManager interface {
MemberChunkingFilter() MemberChunkingFilter
HandleChunk(payload discord.GatewayEventGuildMembersChunk)
RequestMembers(guildID snowflake.Snowflake, userIDs ...snowflake.Snowflake) ([]discord.Member, error)
RequestMembersWithQuery(guildID snowflake.Snowflake, query string, limit int) ([]discord.Member, error)
RequestMembersWithFilter(guildID snowflake.Snowflake, memberFilterFunc func(member discord.Member) bool) ([]discord.Member, error)
RequestMembersCtx(ctx context.Context, guildID snowflake.Snowflake, userIDs ...snowflake.Snowflake) ([]discord.Member, error)
RequestMembersWithQueryCtx(ctx context.Context, guildID snowflake.Snowflake, query string, limit int) ([]discord.Member, error)
RequestMembersWithFilterCtx(ctx context.Context, guildID snowflake.Snowflake, memberFilterFunc func(member discord.Member) bool) ([]discord.Member, error)
RequestMembersChan(guildID snowflake.Snowflake, userIDs ...snowflake.Snowflake) (<-chan discord.Member, func(), error)
RequestMembersWithQueryChan(guildID snowflake.Snowflake, query string, limit int) (<-chan discord.Member, func(), error)
RequestMembersWithFilterChan(guildID snowflake.Snowflake, memberFilterFunc func(member discord.Member) bool) (<-chan discord.Member, func(), error)
}
func NewMemberChunkingManager ¶
func NewMemberChunkingManager(client Client, memberChunkingFilter MemberChunkingFilter) MemberChunkingManager
Click to show internal directories.
Click to hide internal directories.