Documentation
¶
Index ¶
- Variables
- type Cache
- type Caches
- type ChannelCache
- type ChannelCacheImpl
- func (c *ChannelCacheImpl) GetDMChannel(channelID snowflake.Snowflake) (discord.DMChannel, bool)
- func (c *ChannelCacheImpl) GetGuildAudioChannel(channelID snowflake.Snowflake) (discord.GuildAudioChannel, bool)
- func (c *ChannelCacheImpl) GetGuildCategoryChannel(channelID snowflake.Snowflake) (discord.GuildCategoryChannel, bool)
- func (c *ChannelCacheImpl) GetGuildChannel(channelID snowflake.Snowflake) (discord.GuildChannel, bool)
- func (c *ChannelCacheImpl) GetGuildMessageChannel(channelID snowflake.Snowflake) (discord.GuildMessageChannel, bool)
- func (c *ChannelCacheImpl) GetGuildNewsChannel(channelID snowflake.Snowflake) (discord.GuildNewsChannel, bool)
- func (c *ChannelCacheImpl) GetGuildNewsThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
- func (c *ChannelCacheImpl) GetGuildPrivateThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
- func (c *ChannelCacheImpl) GetGuildPublicThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
- func (c *ChannelCacheImpl) GetGuildStageVoiceChannel(channelID snowflake.Snowflake) (discord.GuildStageVoiceChannel, bool)
- func (c *ChannelCacheImpl) GetGuildTextChannel(channelID snowflake.Snowflake) (discord.GuildTextChannel, bool)
- func (c *ChannelCacheImpl) GetGuildThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
- func (c *ChannelCacheImpl) GetGuildVoiceChannel(channelID snowflake.Snowflake) (discord.GuildVoiceChannel, bool)
- func (c *ChannelCacheImpl) GetMessageChannel(channelID snowflake.Snowflake) (discord.MessageChannel, bool)
- func (c *ChannelCacheImpl) GuildChannels(guildID snowflake.Snowflake) []discord.GuildChannel
- func (c *ChannelCacheImpl) GuildThreadsInChannel(channelID snowflake.Snowflake) []discord.GuildThread
- type Config
- type ConfigOpt
- type DefaultCache
- func (c *DefaultCache[T]) All() []T
- func (c *DefaultCache[T]) FindAll(cacheFindFunc FilterFunc[T]) []T
- func (c *DefaultCache[T]) FindFirst(cacheFindFunc FilterFunc[T]) (T, bool)
- func (c *DefaultCache[T]) ForEach(forEachFunc func(entity T))
- func (c *DefaultCache[T]) Get(id snowflake.Snowflake) (T, bool)
- func (c *DefaultCache[T]) MapAll() map[snowflake.Snowflake]T
- func (c *DefaultCache[T]) Put(id snowflake.Snowflake, entity T)
- func (c *DefaultCache[T]) Remove(id snowflake.Snowflake) (T, bool)
- func (c *DefaultCache[T]) RemoveIf(filterFunc FilterFunc[T])
- type DefaultGroupedCache
- func (c *DefaultGroupedCache[T]) All() map[snowflake.Snowflake][]T
- func (c *DefaultGroupedCache[T]) FindAll(cacheFindFunc GroupedCacheFilterFunc[T]) []T
- func (c *DefaultGroupedCache[T]) FindFirst(cacheFindFunc GroupedCacheFilterFunc[T]) (T, bool)
- func (c *DefaultGroupedCache[T]) ForEach(forEachFunc func(groupID snowflake.Snowflake, entity T))
- func (c *DefaultGroupedCache[T]) ForEachGroup(groupID snowflake.Snowflake, forEachFunc func(entity T))
- func (c *DefaultGroupedCache[T]) Get(groupID snowflake.Snowflake, id snowflake.Snowflake) (T, bool)
- func (c *DefaultGroupedCache[T]) GroupAll(groupID snowflake.Snowflake) []T
- func (c *DefaultGroupedCache[T]) GroupFindAll(groupID snowflake.Snowflake, cacheFindFunc GroupedCacheFilterFunc[T]) []T
- func (c *DefaultGroupedCache[T]) GroupFindFirst(groupID snowflake.Snowflake, cacheFindFunc GroupedCacheFilterFunc[T]) (T, bool)
- func (c *DefaultGroupedCache[T]) MapAll() map[snowflake.Snowflake]map[snowflake.Snowflake]T
- func (c *DefaultGroupedCache[T]) MapGroupAll(groupID snowflake.Snowflake) map[snowflake.Snowflake]T
- func (c *DefaultGroupedCache[T]) Put(groupID snowflake.Snowflake, id snowflake.Snowflake, entity T)
- func (c *DefaultGroupedCache[T]) Remove(groupID snowflake.Snowflake, id snowflake.Snowflake) (entity T, ok bool)
- func (c *DefaultGroupedCache[T]) RemoveAll(groupID snowflake.Snowflake)
- func (c *DefaultGroupedCache[T]) RemoveIf(filterFunc GroupedCacheFilterFunc[T])
- type FilterFunc
- type Flags
- type GroupedCache
- type GroupedCacheFilterFunc
- type GuildCache
- type GuildCacheImpl
- func (c *GuildCacheImpl) IsUnavailable(guildID snowflake.Snowflake) bool
- func (c *GuildCacheImpl) IsUnready(shardID int, guildID snowflake.Snowflake) bool
- func (c *GuildCacheImpl) SetAvailable(guildID snowflake.Snowflake)
- func (c *GuildCacheImpl) SetReady(shardID int, guildID snowflake.Snowflake)
- func (c *GuildCacheImpl) SetUnavailable(id snowflake.Snowflake)
- func (c *GuildCacheImpl) SetUnready(shardID int, guildID snowflake.Snowflake)
- func (c *GuildCacheImpl) UnavailableGuilds() []snowflake.Snowflake
- func (c *GuildCacheImpl) UnreadyGuilds(shardID int) []snowflake.Snowflake
- type Policy
Constants ¶
This section is empty.
Variables ¶
View Source
var ( MessageCachePolicyNone Policy[discord.Message] = func(_ discord.Message) bool { return false } // MessageCachePolicyDuration creates a new CachePolicy which caches discord.Message(s) for the give time.Duration MessageCachePolicyDuration = func(duration time.Duration) Policy[discord.Message] { return func(message discord.Message) bool { return message.CreatedAt.Add(duration).After(time.Now()) } } MessageCachePolicyDefault = MessageCachePolicyNone )
Default discord.Message CachePolicy(s)
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache[T any] interface { Get(id snowflake.Snowflake) (T, bool) Put(id snowflake.Snowflake, entity T) Remove(id snowflake.Snowflake) (T, bool) RemoveIf(filterFunc FilterFunc[T]) All() []T MapAll() map[snowflake.Snowflake]T FindFirst(cacheFindFunc FilterFunc[T]) (T, bool) FindAll(cacheFindFunc FilterFunc[T]) []T ForEach(func(entity T)) }
type Caches ¶
type Caches interface { CacheFlags() Flags GetMemberPermissions(guildID snowflake.Snowflake, member discord.Member) discord.Permissions GetMemberPermissionsInChannel(channel discord.GuildChannel, member discord.Member) discord.Permissions MemberRoles(member discord.Member) []discord.Role AudioChannelMembers(channel discord.GuildAudioChannel) []discord.Member GetSelfUser() (discord.OAuth2User, bool) PutSelfUser(user discord.OAuth2User) GetSelfMember(guildID snowflake.Snowflake) (discord.Member, bool) Roles() GroupedCache[discord.Role] Members() GroupedCache[discord.Member] ThreadMembers() GroupedCache[discord.ThreadMember] Presences() GroupedCache[discord.Presence] VoiceStates() GroupedCache[discord.VoiceState] Messages() GroupedCache[discord.Message] Emojis() GroupedCache[discord.Emoji] Stickers() GroupedCache[discord.Sticker] Guilds() GuildCache Channels() ChannelCache StageInstances() GroupedCache[discord.StageInstance] GuildScheduledEvents() GroupedCache[discord.GuildScheduledEvent] }
type ChannelCache ¶
type ChannelCache interface { Cache[discord.Channel] GuildChannels(guildID snowflake.Snowflake) []discord.GuildChannel GuildThreadsInChannel(channelID snowflake.Snowflake) []discord.GuildThread GetGuildChannel(channelID snowflake.Snowflake) (discord.GuildChannel, bool) GetMessageChannel(channelID snowflake.Snowflake) (discord.MessageChannel, bool) GetGuildMessageChannel(channelID snowflake.Snowflake) (discord.GuildMessageChannel, bool) GetGuildThread(channelID snowflake.Snowflake) (discord.GuildThread, bool) GetGuildAudioChannel(channelID snowflake.Snowflake) (discord.GuildAudioChannel, bool) GetGuildTextChannel(channelID snowflake.Snowflake) (discord.GuildTextChannel, bool) GetDMChannel(channelID snowflake.Snowflake) (discord.DMChannel, bool) GetGuildVoiceChannel(channelID snowflake.Snowflake) (discord.GuildVoiceChannel, bool) GetGuildCategoryChannel(channelID snowflake.Snowflake) (discord.GuildCategoryChannel, bool) GetGuildNewsChannel(channelID snowflake.Snowflake) (discord.GuildNewsChannel, bool) GetGuildNewsThread(channelID snowflake.Snowflake) (discord.GuildThread, bool) GetGuildPublicThread(channelID snowflake.Snowflake) (discord.GuildThread, bool) GetGuildPrivateThread(channelID snowflake.Snowflake) (discord.GuildThread, bool) GetGuildStageVoiceChannel(channelID snowflake.Snowflake) (discord.GuildStageVoiceChannel, bool) }
func NewChannelCache ¶
type ChannelCacheImpl ¶
func (*ChannelCacheImpl) GetDMChannel ¶
func (*ChannelCacheImpl) GetGuildAudioChannel ¶
func (c *ChannelCacheImpl) GetGuildAudioChannel(channelID snowflake.Snowflake) (discord.GuildAudioChannel, bool)
func (*ChannelCacheImpl) GetGuildCategoryChannel ¶
func (c *ChannelCacheImpl) GetGuildCategoryChannel(channelID snowflake.Snowflake) (discord.GuildCategoryChannel, bool)
func (*ChannelCacheImpl) GetGuildChannel ¶
func (c *ChannelCacheImpl) GetGuildChannel(channelID snowflake.Snowflake) (discord.GuildChannel, bool)
func (*ChannelCacheImpl) GetGuildMessageChannel ¶
func (c *ChannelCacheImpl) GetGuildMessageChannel(channelID snowflake.Snowflake) (discord.GuildMessageChannel, bool)
func (*ChannelCacheImpl) GetGuildNewsChannel ¶
func (c *ChannelCacheImpl) GetGuildNewsChannel(channelID snowflake.Snowflake) (discord.GuildNewsChannel, bool)
func (*ChannelCacheImpl) GetGuildNewsThread ¶
func (c *ChannelCacheImpl) GetGuildNewsThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
func (*ChannelCacheImpl) GetGuildPrivateThread ¶
func (c *ChannelCacheImpl) GetGuildPrivateThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
func (*ChannelCacheImpl) GetGuildPublicThread ¶
func (c *ChannelCacheImpl) GetGuildPublicThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
func (*ChannelCacheImpl) GetGuildStageVoiceChannel ¶
func (c *ChannelCacheImpl) GetGuildStageVoiceChannel(channelID snowflake.Snowflake) (discord.GuildStageVoiceChannel, bool)
func (*ChannelCacheImpl) GetGuildTextChannel ¶
func (c *ChannelCacheImpl) GetGuildTextChannel(channelID snowflake.Snowflake) (discord.GuildTextChannel, bool)
func (*ChannelCacheImpl) GetGuildThread ¶
func (c *ChannelCacheImpl) GetGuildThread(channelID snowflake.Snowflake) (discord.GuildThread, bool)
func (*ChannelCacheImpl) GetGuildVoiceChannel ¶
func (c *ChannelCacheImpl) GetGuildVoiceChannel(channelID snowflake.Snowflake) (discord.GuildVoiceChannel, bool)
func (*ChannelCacheImpl) GetMessageChannel ¶
func (c *ChannelCacheImpl) GetMessageChannel(channelID snowflake.Snowflake) (discord.MessageChannel, bool)
func (*ChannelCacheImpl) GuildChannels ¶
func (c *ChannelCacheImpl) GuildChannels(guildID snowflake.Snowflake) []discord.GuildChannel
func (*ChannelCacheImpl) GuildThreadsInChannel ¶
func (c *ChannelCacheImpl) GuildThreadsInChannel(channelID snowflake.Snowflake) []discord.GuildThread
type Config ¶
type Config struct { CacheFlags Flags MemberCachePolicy Policy[discord.Member] MessageCachePolicy Policy[discord.Message] }
func DefaultConfig ¶
func DefaultConfig() *Config
type ConfigOpt ¶
type ConfigOpt func(config *Config)
func WithCacheFlags ¶
func WithMemberCachePolicy ¶
type DefaultCache ¶
type DefaultCache[T any] struct { // contains filtered or unexported fields }
func (*DefaultCache[T]) All ¶
func (c *DefaultCache[T]) All() []T
func (*DefaultCache[T]) FindAll ¶
func (c *DefaultCache[T]) FindAll(cacheFindFunc FilterFunc[T]) []T
func (*DefaultCache[T]) FindFirst ¶
func (c *DefaultCache[T]) FindFirst(cacheFindFunc FilterFunc[T]) (T, bool)
func (*DefaultCache[T]) ForEach ¶
func (c *DefaultCache[T]) ForEach(forEachFunc func(entity T))
func (*DefaultCache[T]) MapAll ¶
func (c *DefaultCache[T]) MapAll() map[snowflake.Snowflake]T
func (*DefaultCache[T]) Put ¶
func (c *DefaultCache[T]) Put(id snowflake.Snowflake, entity T)
func (*DefaultCache[T]) RemoveIf ¶
func (c *DefaultCache[T]) RemoveIf(filterFunc FilterFunc[T])
type DefaultGroupedCache ¶
type DefaultGroupedCache[T any] struct { // contains filtered or unexported fields }
func (*DefaultGroupedCache[T]) All ¶
func (c *DefaultGroupedCache[T]) All() map[snowflake.Snowflake][]T
func (*DefaultGroupedCache[T]) FindAll ¶
func (c *DefaultGroupedCache[T]) FindAll(cacheFindFunc GroupedCacheFilterFunc[T]) []T
func (*DefaultGroupedCache[T]) FindFirst ¶
func (c *DefaultGroupedCache[T]) FindFirst(cacheFindFunc GroupedCacheFilterFunc[T]) (T, bool)
func (*DefaultGroupedCache[T]) ForEach ¶
func (c *DefaultGroupedCache[T]) ForEach(forEachFunc func(groupID snowflake.Snowflake, entity T))
func (*DefaultGroupedCache[T]) ForEachGroup ¶
func (c *DefaultGroupedCache[T]) ForEachGroup(groupID snowflake.Snowflake, forEachFunc func(entity T))
func (*DefaultGroupedCache[T]) GroupAll ¶
func (c *DefaultGroupedCache[T]) GroupAll(groupID snowflake.Snowflake) []T
func (*DefaultGroupedCache[T]) GroupFindAll ¶
func (c *DefaultGroupedCache[T]) GroupFindAll(groupID snowflake.Snowflake, cacheFindFunc GroupedCacheFilterFunc[T]) []T
func (*DefaultGroupedCache[T]) GroupFindFirst ¶
func (c *DefaultGroupedCache[T]) GroupFindFirst(groupID snowflake.Snowflake, cacheFindFunc GroupedCacheFilterFunc[T]) (T, bool)
func (*DefaultGroupedCache[T]) MapAll ¶
func (c *DefaultGroupedCache[T]) MapAll() map[snowflake.Snowflake]map[snowflake.Snowflake]T
func (*DefaultGroupedCache[T]) MapGroupAll ¶
func (c *DefaultGroupedCache[T]) MapGroupAll(groupID snowflake.Snowflake) map[snowflake.Snowflake]T
func (*DefaultGroupedCache[T]) Put ¶
func (c *DefaultGroupedCache[T]) Put(groupID snowflake.Snowflake, id snowflake.Snowflake, entity T)
func (*DefaultGroupedCache[T]) RemoveAll ¶
func (c *DefaultGroupedCache[T]) RemoveAll(groupID snowflake.Snowflake)
func (*DefaultGroupedCache[T]) RemoveIf ¶
func (c *DefaultGroupedCache[T]) RemoveIf(filterFunc GroupedCacheFilterFunc[T])
type FilterFunc ¶
type Flags ¶
type Flags int
Flags are used to enable/disable certain internal caches
const ( FlagGuilds Flags = 1 << iota FlagGuildScheduledEvents FlagUsers FlagMembers FlagThreadMembers FlagMessages FlagPresences FlagGuildTextChannels FlagDMChannels FlagGuildVoiceChannels FlagGroupDMChannels FlagGuildCategories FlagGuildNewsChannels FlagGuildNewsThreads FlagGuildPublicThreads FlagGuildPrivateThreads FlagGuildStageVoiceChannels FlagRoles FlagRoleTags FlagEmojis FlagStickers FlagVoiceStates FlagStageInstances FlagsNone Flags = 0 FlagsAllChannels = FlagGuildTextChannels | FlagDMChannels | FlagGuildVoiceChannels | FlagGroupDMChannels | FlagGuildCategories | FlagGuildNewsChannels | FlagGuildNewsThreads | FlagGuildPublicThreads | FlagGuildPrivateThreads | FlagGuildStageVoiceChannels FlagsAllThreads = FlagGuildNewsThreads | FlagGuildPublicThreads | FlagGuildPrivateThreads FlagsDefault = FlagGuilds | FlagsAllChannels | FlagRoles | FlagEmojis | FlagStickers | FlagVoiceStates FlagsFullRoles = FlagRoles | FlagRoleTags FlagsAll = FlagGuilds | FlagGuildScheduledEvents | FlagsAllChannels | FlagsFullRoles | FlagEmojis | FlagStickers | FlagVoiceStates | FlagStageInstances | FlagPresences )
values for CacheFlags
type GroupedCache ¶
type GroupedCache[T any] interface { Get(groupID snowflake.Snowflake, id snowflake.Snowflake) (T, bool) Put(groupID snowflake.Snowflake, id snowflake.Snowflake, entity T) Remove(groupID snowflake.Snowflake, id snowflake.Snowflake) (T, bool) RemoveAll(groupID snowflake.Snowflake) RemoveIf(filterFunc GroupedCacheFilterFunc[T]) All() map[snowflake.Snowflake][]T GroupAll(groupID snowflake.Snowflake) []T MapAll() map[snowflake.Snowflake]map[snowflake.Snowflake]T MapGroupAll(groupID snowflake.Snowflake) map[snowflake.Snowflake]T FindFirst(cacheFindFunc GroupedCacheFilterFunc[T]) (T, bool) GroupFindFirst(groupID snowflake.Snowflake, cacheFindFunc GroupedCacheFilterFunc[T]) (T, bool) FindAll(cacheFindFunc GroupedCacheFilterFunc[T]) []T GroupFindAll(groupID snowflake.Snowflake, cacheFindFunc GroupedCacheFilterFunc[T]) []T ForEach(func(groupID snowflake.Snowflake, entity T)) ForEachGroup(groupID snowflake.Snowflake, forEachFunc func(entity T)) }
func NewGroupedCache ¶
func NewGroupedCache[T any](flags Flags, neededFlags Flags, policy Policy[T]) GroupedCache[T]
type GroupedCacheFilterFunc ¶
type GuildCache ¶
type GuildCache interface { Cache[discord.Guild] SetReady(shardID int, guildID snowflake.Snowflake) SetUnready(shardID int, guildID snowflake.Snowflake) IsUnready(shardID int, guildID snowflake.Snowflake) bool UnreadyGuilds(shardID int) []snowflake.Snowflake SetAvailable(guildID snowflake.Snowflake) }
func NewGuildCache ¶
type GuildCacheImpl ¶
func (*GuildCacheImpl) IsUnavailable ¶
func (c *GuildCacheImpl) IsUnavailable(guildID snowflake.Snowflake) bool
func (*GuildCacheImpl) IsUnready ¶
func (c *GuildCacheImpl) IsUnready(shardID int, guildID snowflake.Snowflake) bool
func (*GuildCacheImpl) SetAvailable ¶
func (c *GuildCacheImpl) SetAvailable(guildID snowflake.Snowflake)
func (*GuildCacheImpl) SetReady ¶
func (c *GuildCacheImpl) SetReady(shardID int, guildID snowflake.Snowflake)
func (*GuildCacheImpl) SetUnavailable ¶
func (c *GuildCacheImpl) SetUnavailable(id snowflake.Snowflake)
func (*GuildCacheImpl) SetUnready ¶
func (c *GuildCacheImpl) SetUnready(shardID int, guildID snowflake.Snowflake)
func (*GuildCacheImpl) UnavailableGuilds ¶
func (c *GuildCacheImpl) UnavailableGuilds() []snowflake.Snowflake
func (*GuildCacheImpl) UnreadyGuilds ¶
func (c *GuildCacheImpl) UnreadyGuilds(shardID int) []snowflake.Snowflake
type Policy ¶
Policy can be used to define your own policy for caching cache
var ( MemberCachePolicyNone Policy[discord.Member] = func(_ discord.Member) bool { return false } MemberCachePolicyAll Policy[discord.Member] = func(_ discord.Member) bool { return true } MemberCachePolicyOwner Policy[discord.Member] = func(member discord.Member) bool { return false } MemberCachePolicyOnline Policy[discord.Member] = func(_ discord.Member) bool { return false } MemberCachePolicyVoice Policy[discord.Member] = func(member discord.Member) bool { return false } MemberCachePolicyPending Policy[discord.Member] = func(member discord.Member) bool { return member.Pending } MemberCachePolicyDefault = MemberCachePolicyOwner.Or(MemberCachePolicyVoice) )
Default discord.Member CachePolicy(s)
func AllPolicies ¶
AllPolicies is a shorthand for CachePolicy.And(CachePolicy).And(CachePolicy) etc.
Click to show internal directories.
Click to hide internal directories.