client

package
v0.1.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2023 License: Apache-2.0 Imports: 20 Imported by: 0

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.

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

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 ChannelCreateEvent func(bot Client, shard *gateway.Shard, ev discord.Channel)

type ChannelDeleteEvent

type ChannelDeleteEvent func(bot Client, shard *gateway.Shard, ev discord.Channel)

type ChannelPinsUpdateEvent

type ChannelPinsUpdateEvent func(bot Client, shard *gateway.Shard, ev gateway.ChannelPinsUpdateEvent)

type ChannelUpdateEvent

type ChannelUpdateEvent func(bot Client, shard *gateway.Shard, new discord.Channel, old *discord.Channel)

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()
}

func New

func New(token string, opt ...Option) (Client, error)

New creates a client with default settings (automatic sharding, default cache). To override these settings, use Options

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 GuildDeleteEvent func(bot Client, shard *gateway.Shard, ev gateway.UnavailableGuild, cache *discord.Guild)

type GuildEmojisUpdateEvent

type GuildEmojisUpdateEvent func(bot Client, shard *gateway.Shard, data gateway.GuildEmojisUpdateEvent)

type GuildIntegrationsUpdateEvent

type GuildIntegrationsUpdateEvent func(bot Client, shard *gateway.Shard, guild snowflake.ID)

type GuildMemberAddEvent

type GuildMemberAddEvent func(bot Client, shard *gateway.Shard, member discord.MemberWithUser)

type GuildMemberRemoveEvent

type GuildMemberRemoveEvent func(bot Client, shard *gateway.Shard, guild snowflake.ID, user discord.User, cache *discord.Member)

type GuildMemberUpdateEvent

type GuildMemberUpdateEvent func(bot Client, shard *gateway.Shard, new discord.MemberWithUser, old *discord.Member)

type GuildRoleCreateEvent

type GuildRoleCreateEvent func(bot Client, shard *gateway.Shard, role discord.Role)

type GuildRoleDeleteEvent

type GuildRoleDeleteEvent func(bot Client, shard *gateway.Shard, data gateway.GuildRoleDeleteEvent, cache *discord.Role)

type GuildRoleUpdateEvent

type GuildRoleUpdateEvent func(bot Client, shard *gateway.Shard, new discord.Role, old *discord.Role)

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 GuildScheduledUserAddEvent

type GuildScheduledUserAddEvent func(bot Client, shard *gateway.Shard, scheduled snowflake.ID, user snowflake.ID, guild snowflake.ID)

type GuildScheduledUserRemoveEvent

type GuildScheduledUserRemoveEvent func(bot Client, shard *gateway.Shard, scheduled snowflake.ID, user snowflake.ID, guild snowflake.ID)

type GuildStickersUpdateEvent

type GuildStickersUpdateEvent func(bot Client, shard *gateway.Shard, guild snowflake.ID, stickers []discord.GuildSticker)

type GuildUpdateEvent

type GuildUpdateEvent func(bot Client, shard *gateway.Shard, ev discord.Guild, old *discord.Guild)

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 MessageCreateEvent func(bot Client, shard *gateway.Shard, ev discord.Message)

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 MessageUpdateEvent func(bot Client, shard *gateway.Shard, ev discord.Message, old *discord.BaseMessage)

type Option

type Option func(v *options)

Option can be provided to client constructor to alter its settings.

func WithAPIOptions

func WithAPIOptions(opts ...api.Option) Option

func WithConnectionTimeout

func WithConnectionTimeout(timeout time.Duration) Option

func WithDebug

func WithDebug(enabled bool) Option

func WithDisabledPrefetchBlock

func WithDisabledPrefetchBlock() Option

func WithGatewayOpts

func WithGatewayOpts(opts ...gateway.Option) Option

func WithIntents

func WithIntents(intents intents.Intent) Option

func WithLogger

func WithLogger(logger golog.Logger) Option

func WithShardCount

func WithShardCount(count uint16) Option

func WithShards

func WithShards(shards []uint16) Option

func WithStore

func WithStore(store cache.Store) Option

type PresenceUpdate

type PresenceUpdate func(bot Client, shard *gateway.Shard, ev discord.Presence)

type ReadyEvent

type ReadyEvent func(bot Client)

type ShardReadyEvent

type ShardReadyEvent func(bot Client, shard *gateway.Shard, ev gateway.ReadyEvent)

type ShardResumedEvent

type ShardResumedEvent func(bot Client, shard *gateway.Shard)

type StageEvent

type StageEvent func(bot Client, shard *gateway.Shard, ev discord.StageInstance)

type ThreadCreateEvent

type ThreadCreateEvent func(bot Client, shard *gateway.Shard, ev discord.Channel)

type ThreadDeleteEvent

type ThreadDeleteEvent func(bot Client, shard *gateway.Shard, ev discord.Channel)

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 ThreadUpdateEvent func(bot Client, shard *gateway.Shard, ev discord.Channel, old *discord.Channel)

type TypingStartEvent

type TypingStartEvent func(bot Client, shard *gateway.Shard, ev gateway.TypingStartEvent)

type UserUpdateEvent

type UserUpdateEvent func(bot Client, shard *gateway.Shard, new discord.User, old *discord.User)

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)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL