Documentation ¶
Overview ¶
Package client provides a user-friendly wrapper over gateway, cache and API.
Getting started ¶
Create a client and register event listeners
bot, err := client.New("token") // options: client.WithX() bot.Sub().Interaction(func(bot client.Client, shard *gateway.Shard, ev *interactions.Interaction) { HandleInteraction(bot, cfg, ev) // your implementation }) bot.Sub().MessageCreate(func(bot client.Client, shard *gateway.Shard, ev discord.Message) { HandleMessage(bot, ev) // your implementation }) // start the client err = bot.Start(context.Background()) if err != nil { panic(err) } bot.Wait()
Accessing API ¶
API is accessible using Client.API() method. Refer to api package for more information.
Accessing data ¶
There are 3 ways of accessing various discord data.
- With client helper methods, which use both cache and API (defined in discord.ClientQuery)
- Using cache (Client.Store(), cache.Store)
- Using API (above)
Accessing gateway ¶
Current shard is transmitted in all events; To access any shard from client, use Client.Get()
There are also two gateway methods accessible from client:
- FetchMembers()
- ChangeVoiceState()
Index ¶
- func Execute[V any](manager *EventManager, exec func(handler V))
- type ChannelCreateEvent
- type ChannelDeleteEvent
- type ChannelPinsUpdateEvent
- type ChannelUpdateEvent
- type Client
- type EventHandler
- type EventManager
- func (v *EventManager) ChannelCreate(event ChannelCreateEvent) *EventHandler
- func (v *EventManager) ChannelPinsUpdate(event ChannelPinsUpdateEvent) *EventHandler
- func (v *EventManager) ChannelUpdate(event ChannelUpdateEvent) *EventHandler
- func (v *EventManager) GuildBanAdd(event GuildBanAddEvent) *EventHandler
- func (v *EventManager) GuildBanRemove(event GuildBanRemoveEvent) *EventHandler
- func (v *EventManager) GuildCreate(event GuildCreateEvent) *EventHandler
- func (v *EventManager) GuildDelete(event GuildDeleteEvent) *EventHandler
- func (v *EventManager) GuildEmojisUpdate(event GuildEmojisUpdateEvent) *EventHandler
- func (v *EventManager) GuildMemberAdd(event GuildMemberAddEvent) *EventHandler
- func (v *EventManager) GuildMemberRemove(event GuildMemberRemoveEvent) *EventHandler
- func (v *EventManager) GuildMemberUpdate(event GuildMemberUpdateEvent) *EventHandler
- func (v *EventManager) GuildRoleCreate(event GuildRoleCreateEvent) *EventHandler
- func (v *EventManager) GuildRoleDelete(event GuildRoleDeleteEvent) *EventHandler
- func (v *EventManager) GuildRoleUpdate(event GuildRoleUpdateEvent) *EventHandler
- func (v *EventManager) GuildUpdate(event GuildUpdateEvent) *EventHandler
- func (v *EventManager) IntegrationCreate(event IntegrationCreateEvent) *EventHandler
- func (v *EventManager) IntegrationDelete(event IntegrationDeleteEvent) *EventHandler
- func (v *EventManager) IntegrationUpdate(event IntegrationUpdateEvent) *EventHandler
- func (v *EventManager) Interaction(event InteractionEvent) *EventHandler
- func (v *EventManager) InviteCreate(event InviteCreateEvent) *EventHandler
- func (v *EventManager) InviteDelete(event InviteDeleteEvent) *EventHandler
- func (v *EventManager) MessageBulkDelete(event MessageBulkDeleteEvent) *EventHandler
- func (v *EventManager) MessageCreate(event MessageCreateEvent) *EventHandler
- func (v *EventManager) MessageDelete(event MessageDeleteEvent) *EventHandler
- func (v *EventManager) MessageUpdate(event MessageUpdateEvent) *EventHandler
- func (v *EventManager) PresenceUpdate(event PresenceUpdate) *EventHandler
- func (v *EventManager) ReactionAdd(event MessageReactionAddEvent) *EventHandler
- func (v *EventManager) ReactionRemove(event MessageReactionRemoveEvent) *EventHandler
- func (v *EventManager) ReactionRemoveAll(event MessageReactionRemoveAllEvent) *EventHandler
- func (v *EventManager) ReactionRemoveEmoji(event MessageReactionRemoveEmojiEvent) *EventHandler
- func (v *EventManager) Ready(event ReadyEvent) *EventHandler
- func (v *EventManager) Remove(id uint64)
- func (v *EventManager) ShardReady(event ShardReadyEvent) *EventHandler
- func (v *EventManager) ShardResumed(event ShardResumedEvent) *EventHandler
- func (v *EventManager) StageCreate(event StageEvent) *EventHandler
- func (v *EventManager) StageDelete(event StageEvent) *EventHandler
- func (v *EventManager) StageUpdate(event StageEvent) *EventHandler
- func (v *EventManager) StickersUpdate(event GuildStickersUpdateEvent) *EventHandler
- func (v *EventManager) ThreadCreate(event ThreadCreateEvent) *EventHandler
- func (v *EventManager) ThreadDelete(event ThreadDeleteEvent) *EventHandler
- func (v *EventManager) ThreadMemberUpdate(event ThreadMemberUpdateEvent) *EventHandler
- func (v *EventManager) ThreadMembersUpdate(event ThreadMembersUpdateEvent) *EventHandler
- func (v *EventManager) ThreadUpdate(event ThreadUpdateEvent) *EventHandler
- func (v *EventManager) TypingStart(event TypingStartEvent) *EventHandler
- func (v *EventManager) UserUpdate(event UserUpdateEvent) *EventHandler
- func (v *EventManager) VoiceServerUpdate(event VoiceServerUpdateEvent) *EventHandler
- func (v *EventManager) VoiceStateUpdate(event VoiceStateUpdateEvent) *EventHandler
- type EventSubscriber
- type GuildBanAddEvent
- type GuildBanRemoveEvent
- type GuildCreateEvent
- type GuildDeleteEvent
- type GuildEmojisUpdateEvent
- type GuildIntegrationsUpdateEvent
- type GuildMemberAddEvent
- type GuildMemberRemoveEvent
- type GuildMemberUpdateEvent
- type GuildRoleCreateEvent
- type GuildRoleDeleteEvent
- type GuildRoleUpdateEvent
- type GuildScheduledCreateEvent
- type GuildScheduledDeleteEvent
- type GuildScheduledUpdateEvent
- type GuildScheduledUserAddEvent
- type GuildScheduledUserRemoveEvent
- type GuildStickersUpdateEvent
- type GuildUpdateEvent
- type IntegrationCreateEvent
- type IntegrationDeleteEvent
- type IntegrationUpdateEvent
- type InteractionEvent
- type InviteCreateEvent
- type InviteDeleteEvent
- type MessageBulkDeleteEvent
- type MessageCreateEvent
- type MessageDeleteEvent
- type MessageReactionAddEvent
- type MessageReactionRemoveAllEvent
- type MessageReactionRemoveEmojiEvent
- type MessageReactionRemoveEvent
- type MessageUpdateEvent
- type Option
- func WithAPIOptions(opts ...api.Option) Option
- func WithConnectionTimeout(timeout time.Duration) Option
- func WithDebug(enabled bool) Option
- func WithDisabledPrefetchBlock() Option
- func WithGatewayOpts(opts ...gateway.Option) Option
- func WithIntents(intents intents.Intent) Option
- func WithLogger(logger golog.Logger) Option
- func WithShardCount(count uint16) Option
- func WithShards(shards []uint16) Option
- func WithStore(store cache.Store) Option
- type PresenceUpdate
- type ReadyEvent
- type ShardReadyEvent
- type ShardResumedEvent
- type StageEvent
- type ThreadCreateEvent
- type ThreadDeleteEvent
- type ThreadMemberUpdateEvent
- type ThreadMembersUpdateEvent
- type ThreadUpdateEvent
- type TypingStartEvent
- type UserUpdateEvent
- type VoiceServerUpdateEvent
- type VoiceStateUpdateEvent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Execute ¶
func Execute[V any](manager *EventManager, exec func(handler V))
Types ¶
type ChannelCreateEvent ¶
type ChannelDeleteEvent ¶
type ChannelPinsUpdateEvent ¶
type ChannelPinsUpdateEvent func(bot Client, shard *gateway.Shard, ev gateway.ChannelPinsUpdateEvent)
type ChannelUpdateEvent ¶
type Client ¶
type Client interface { discord.ClientQuery API() *api.Client Start(ctx context.Context) error AvgLatency() uint16 Get(id uint16) *gateway.Shard All() []*gateway.Shard Sub() *EventManager Store() cache.Store Presence() gateway.PresenceSet Slash() slash.Query CalcShard(guild snowflake.ID) uint16 FetchMembers(ctx context.Context, data gateway.RequestMembers) (members []discord.MemberWithUser, presences []discord.BasePresence, err error) ChangeVoiceState(ctx context.Context, opts gateway.ChangeVoiceStateOptions) (*gateway.VoiceStateUpdateEvent, *gateway.VoiceServerUpdateEvent, error) Wait() }
type EventHandler ¶
type EventHandler struct {
// contains filtered or unexported fields
}
func On ¶
func On[V any](manager *EventManager, fn V) *EventHandler
func (EventHandler) Close ¶
func (v EventHandler) Close()
type EventManager ¶
type EventManager struct {
// contains filtered or unexported fields
}
func (*EventManager) ChannelCreate ¶
func (v *EventManager) ChannelCreate(event ChannelCreateEvent) *EventHandler
func (*EventManager) ChannelPinsUpdate ¶
func (v *EventManager) ChannelPinsUpdate(event ChannelPinsUpdateEvent) *EventHandler
func (*EventManager) ChannelUpdate ¶
func (v *EventManager) ChannelUpdate(event ChannelUpdateEvent) *EventHandler
func (*EventManager) GuildBanAdd ¶
func (v *EventManager) GuildBanAdd(event GuildBanAddEvent) *EventHandler
func (*EventManager) GuildBanRemove ¶
func (v *EventManager) GuildBanRemove(event GuildBanRemoveEvent) *EventHandler
func (*EventManager) GuildCreate ¶
func (v *EventManager) GuildCreate(event GuildCreateEvent) *EventHandler
func (*EventManager) GuildDelete ¶
func (v *EventManager) GuildDelete(event GuildDeleteEvent) *EventHandler
func (*EventManager) GuildEmojisUpdate ¶
func (v *EventManager) GuildEmojisUpdate(event GuildEmojisUpdateEvent) *EventHandler
func (*EventManager) GuildMemberAdd ¶
func (v *EventManager) GuildMemberAdd(event GuildMemberAddEvent) *EventHandler
func (*EventManager) GuildMemberRemove ¶
func (v *EventManager) GuildMemberRemove(event GuildMemberRemoveEvent) *EventHandler
func (*EventManager) GuildMemberUpdate ¶
func (v *EventManager) GuildMemberUpdate(event GuildMemberUpdateEvent) *EventHandler
func (*EventManager) GuildRoleCreate ¶
func (v *EventManager) GuildRoleCreate(event GuildRoleCreateEvent) *EventHandler
func (*EventManager) GuildRoleDelete ¶
func (v *EventManager) GuildRoleDelete(event GuildRoleDeleteEvent) *EventHandler
func (*EventManager) GuildRoleUpdate ¶
func (v *EventManager) GuildRoleUpdate(event GuildRoleUpdateEvent) *EventHandler
func (*EventManager) GuildUpdate ¶
func (v *EventManager) GuildUpdate(event GuildUpdateEvent) *EventHandler
func (*EventManager) IntegrationCreate ¶
func (v *EventManager) IntegrationCreate(event IntegrationCreateEvent) *EventHandler
func (*EventManager) IntegrationDelete ¶
func (v *EventManager) IntegrationDelete(event IntegrationDeleteEvent) *EventHandler
func (*EventManager) IntegrationUpdate ¶
func (v *EventManager) IntegrationUpdate(event IntegrationUpdateEvent) *EventHandler
func (*EventManager) Interaction ¶
func (v *EventManager) Interaction(event InteractionEvent) *EventHandler
func (*EventManager) InviteCreate ¶
func (v *EventManager) InviteCreate(event InviteCreateEvent) *EventHandler
func (*EventManager) InviteDelete ¶
func (v *EventManager) InviteDelete(event InviteDeleteEvent) *EventHandler
func (*EventManager) MessageBulkDelete ¶
func (v *EventManager) MessageBulkDelete(event MessageBulkDeleteEvent) *EventHandler
func (*EventManager) MessageCreate ¶
func (v *EventManager) MessageCreate(event MessageCreateEvent) *EventHandler
func (*EventManager) MessageDelete ¶
func (v *EventManager) MessageDelete(event MessageDeleteEvent) *EventHandler
func (*EventManager) MessageUpdate ¶
func (v *EventManager) MessageUpdate(event MessageUpdateEvent) *EventHandler
func (*EventManager) PresenceUpdate ¶
func (v *EventManager) PresenceUpdate(event PresenceUpdate) *EventHandler
func (*EventManager) ReactionAdd ¶
func (v *EventManager) ReactionAdd(event MessageReactionAddEvent) *EventHandler
func (*EventManager) ReactionRemove ¶
func (v *EventManager) ReactionRemove(event MessageReactionRemoveEvent) *EventHandler
func (*EventManager) ReactionRemoveAll ¶
func (v *EventManager) ReactionRemoveAll(event MessageReactionRemoveAllEvent) *EventHandler
func (*EventManager) ReactionRemoveEmoji ¶
func (v *EventManager) ReactionRemoveEmoji(event MessageReactionRemoveEmojiEvent) *EventHandler
func (*EventManager) Ready ¶
func (v *EventManager) Ready(event ReadyEvent) *EventHandler
func (*EventManager) Remove ¶
func (v *EventManager) Remove(id uint64)
func (*EventManager) ShardReady ¶
func (v *EventManager) ShardReady(event ShardReadyEvent) *EventHandler
func (*EventManager) ShardResumed ¶
func (v *EventManager) ShardResumed(event ShardResumedEvent) *EventHandler
func (*EventManager) StageCreate ¶
func (v *EventManager) StageCreate(event StageEvent) *EventHandler
func (*EventManager) StageDelete ¶
func (v *EventManager) StageDelete(event StageEvent) *EventHandler
func (*EventManager) StageUpdate ¶
func (v *EventManager) StageUpdate(event StageEvent) *EventHandler
func (*EventManager) StickersUpdate ¶
func (v *EventManager) StickersUpdate(event GuildStickersUpdateEvent) *EventHandler
func (*EventManager) ThreadCreate ¶
func (v *EventManager) ThreadCreate(event ThreadCreateEvent) *EventHandler
func (*EventManager) ThreadDelete ¶
func (v *EventManager) ThreadDelete(event ThreadDeleteEvent) *EventHandler
func (*EventManager) ThreadMemberUpdate ¶
func (v *EventManager) ThreadMemberUpdate(event ThreadMemberUpdateEvent) *EventHandler
func (*EventManager) ThreadMembersUpdate ¶
func (v *EventManager) ThreadMembersUpdate(event ThreadMembersUpdateEvent) *EventHandler
func (*EventManager) ThreadUpdate ¶
func (v *EventManager) ThreadUpdate(event ThreadUpdateEvent) *EventHandler
func (*EventManager) TypingStart ¶
func (v *EventManager) TypingStart(event TypingStartEvent) *EventHandler
func (*EventManager) UserUpdate ¶
func (v *EventManager) UserUpdate(event UserUpdateEvent) *EventHandler
func (*EventManager) VoiceServerUpdate ¶
func (v *EventManager) VoiceServerUpdate(event VoiceServerUpdateEvent) *EventHandler
func (*EventManager) VoiceStateUpdate ¶
func (v *EventManager) VoiceStateUpdate(event VoiceStateUpdateEvent) *EventHandler
type EventSubscriber ¶
type EventSubscriber interface { GuildCreate(event GuildCreateEvent) *EventHandler ShardReady(event ShardReadyEvent) *EventHandler TypingStart(event TypingStartEvent) *EventHandler MessageCreate(event MessageCreateEvent) *EventHandler MessageUpdate(event MessageUpdateEvent) *EventHandler MessageDelete(event MessageDeleteEvent) *EventHandler MessageBulkDelete(event MessageBulkDeleteEvent) *EventHandler ReactionAdd(event MessageReactionAddEvent) *EventHandler ReactionRemove(event MessageReactionRemoveEvent) *EventHandler ReactionRemoveAll(event MessageReactionRemoveAllEvent) *EventHandler ReactionRemoveEmoji(event MessageReactionRemoveEmojiEvent) *EventHandler ShardResumed(event ShardResumedEvent) *EventHandler ChannelCreate(event ChannelCreateEvent) *EventHandler ChannelUpdate(event ChannelUpdateEvent) *EventHandler ChannelPinsUpdate(event ChannelPinsUpdateEvent) *EventHandler ThreadCreate(event ThreadCreateEvent) *EventHandler ThreadUpdate(event ThreadUpdateEvent) *EventHandler ThreadDelete(event ThreadDeleteEvent) *EventHandler ThreadMemberUpdate(event ThreadMemberUpdateEvent) *EventHandler ThreadMembersUpdate(event ThreadMembersUpdateEvent) *EventHandler GuildUpdate(event GuildUpdateEvent) *EventHandler GuildDelete(event GuildDeleteEvent) *EventHandler GuildRoleAdd(event GuildRoleCreateEvent) *EventHandler GuildRoleUpdate(event GuildRoleUpdateEvent) *EventHandler GuildRoleDelete(event GuildRoleDeleteEvent) *EventHandler GuildBanAdd(event GuildBanAddEvent) *EventHandler GuildBanRemove(event GuildBanRemoveEvent) *EventHandler GuildEmojisUpdate(event GuildEmojisUpdateEvent) *EventHandler GuildStickersUpdate(event GuildStickersUpdateEvent) *EventHandler GuildMemberAdd(event GuildMemberAddEvent) *EventHandler GuildMemberRemove(event GuildMemberRemoveEvent) *EventHandler GuildMemberUpdate(event GuildMemberUpdateEvent) *EventHandler InviteCreate(event InviteCreateEvent) *EventHandler InviteDelete(event InviteDeleteEvent) *EventHandler PresenceUpdate(event PresenceUpdate) *EventHandler StageCreate(event StageEvent) *EventHandler StageDelete(event StageEvent) *EventHandler StageUpdate(event StageEvent) *EventHandler UserUpdate(event UserUpdateEvent) *EventHandler IntegrationCreate(event IntegrationCreateEvent) *EventHandler IntegrationUpdate(event IntegrationUpdateEvent) *EventHandler IntegrationDelete(event IntegrationDeleteEvent) *EventHandler }
type GuildBanAddEvent ¶
type GuildBanAddEvent func(bot Client, shard *gateway.Shard, data gateway.GuildBanEvent)
type GuildBanRemoveEvent ¶
type GuildBanRemoveEvent func(bot Client, shard *gateway.Shard, data gateway.GuildBanEvent)
type GuildCreateEvent ¶
type GuildCreateEvent func(bot Client, shard *gateway.Shard, ev discord.GuildWithData)
type GuildDeleteEvent ¶
type GuildEmojisUpdateEvent ¶
type GuildEmojisUpdateEvent func(bot Client, shard *gateway.Shard, data gateway.GuildEmojisUpdateEvent)
type GuildMemberAddEvent ¶
type GuildMemberAddEvent func(bot Client, shard *gateway.Shard, member discord.MemberWithUser)
type GuildMemberRemoveEvent ¶
type GuildMemberUpdateEvent ¶
type GuildRoleCreateEvent ¶
type GuildRoleDeleteEvent ¶
type GuildRoleUpdateEvent ¶
type GuildScheduledCreateEvent ¶
type GuildScheduledCreateEvent func(bot Client, shard *gateway.Shard, data discord.GuildScheduledEvent)
type GuildScheduledDeleteEvent ¶
type GuildScheduledDeleteEvent func(bot Client, shard *gateway.Shard, data discord.GuildScheduledEvent)
type GuildScheduledUpdateEvent ¶
type GuildScheduledUpdateEvent func(bot Client, shard *gateway.Shard, data discord.GuildScheduledEvent)
type GuildStickersUpdateEvent ¶
type GuildStickersUpdateEvent func(bot Client, shard *gateway.Shard, guild snowflake.ID, stickers []discord.GuildSticker)
type GuildUpdateEvent ¶
type IntegrationCreateEvent ¶
type IntegrationCreateEvent func(bot Client, shard *gateway.Shard, ev discord.Integration)
type IntegrationDeleteEvent ¶
type IntegrationDeleteEvent func(bot Client, shard *gateway.Shard, ev gateway.IntegrationDeleteEvent)
type IntegrationUpdateEvent ¶
type IntegrationUpdateEvent func(bot Client, shard *gateway.Shard, ev discord.Integration)
type InteractionEvent ¶
type InteractionEvent func(bot Client, shard *gateway.Shard, ev *interactions.Interaction)
type InviteCreateEvent ¶
type InviteCreateEvent func(bot Client, shard *gateway.Shard, data gateway.InviteCreateEvent)
type InviteDeleteEvent ¶
type InviteDeleteEvent func(bot Client, shard *gateway.Shard, data gateway.InviteDeleteEvent)
type MessageBulkDeleteEvent ¶
type MessageBulkDeleteEvent func(bot Client, shard *gateway.Shard, ids []snowflake.ID, guild snowflake.ID, channel snowflake.ID)
MessageBulkDeleteEvent
TODO: Partial message type instead of ids
type MessageCreateEvent ¶
type MessageDeleteEvent ¶
type MessageDeleteEvent func(bot Client, shard *gateway.Shard, ev gateway.MessageDeleteEvent, cache *discord.BaseMessage)
type MessageReactionAddEvent ¶
type MessageReactionAddEvent func(bot Client, shard *gateway.Shard, ev gateway.MessageReactionAddEvent)
type MessageReactionRemoveAllEvent ¶
type MessageReactionRemoveAllEvent func(bot Client, shard *gateway.Shard, ev gateway.MessageReactionRemoveAllEvent)
type MessageReactionRemoveEmojiEvent ¶
type MessageReactionRemoveEmojiEvent func(bot Client, shard *gateway.Shard, data gateway.MessageReactionRemoveAllEmojiEvent)
type MessageReactionRemoveEvent ¶
type MessageReactionRemoveEvent func(bot Client, shard *gateway.Shard, ev gateway.MessageReactionRemoveEvent)
type MessageUpdateEvent ¶
type Option ¶
type Option func(v *options)
Option can be provided to client constructor to alter its settings.
func WithAPIOptions ¶
func WithConnectionTimeout ¶
func WithDisabledPrefetchBlock ¶
func WithDisabledPrefetchBlock() Option
func WithGatewayOpts ¶
func WithIntents ¶
func WithLogger ¶
func WithShardCount ¶
func WithShards ¶
type PresenceUpdate ¶
type ReadyEvent ¶
type ReadyEvent func(bot Client)
type ShardReadyEvent ¶
type ShardReadyEvent func(bot Client, shard *gateway.Shard, ev gateway.ReadyEvent)
type ShardResumedEvent ¶
type StageEvent ¶
type StageEvent func(bot Client, shard *gateway.Shard, ev discord.StageInstance)
type ThreadCreateEvent ¶
type ThreadDeleteEvent ¶
ThreadDeleteEvent
Reference: https://discord.com/developers/docs/topics/gateway#thread-delete
type ThreadMemberUpdateEvent ¶
type ThreadMemberUpdateEvent func(bot Client, shard *gateway.Shard, ev discord.ThreadMember)
type ThreadMembersUpdateEvent ¶
type ThreadMembersUpdateEvent func(bot Client, shard *gateway.Shard, ev gateway.ThreadMembersUpdateEvent)
type ThreadUpdateEvent ¶
type TypingStartEvent ¶
type TypingStartEvent func(bot Client, shard *gateway.Shard, ev gateway.TypingStartEvent)
type UserUpdateEvent ¶
type VoiceServerUpdateEvent ¶
type VoiceServerUpdateEvent func(bot Client, shard *gateway.Shard, ev gateway.VoiceServerUpdateEvent)
type VoiceStateUpdateEvent ¶
type VoiceStateUpdateEvent func(bot Client, shard *gateway.Shard, ev gateway.VoiceStateUpdateEvent)
Click to show internal directories.
Click to hide internal directories.