Versions in this module Expand all Collapse all v1 v1.24.19 Mar 7, 2021 Changes in this version + var ErrTimeoutWaitingForMember = errors.New("Timeout waiting for members") + var ReadyTracker = &readyTracker + func GenNonce() int + func GetMemberJoinedAt(guildID, userID int64) (*dstate.MemberState, error) + func HandleMessageCreateUpdateFirst(evt *eventsystem.EventData) + func IsNormalUserMessage(msg *discordgo.Message) bool type MemberFetchRequest + NeedJoinedAt bool type NodeImpl + func (n *NodeImpl) AddNewShards(shards ...int) + func (n *NodeImpl) ResumeShard(shard int, sessionID string, sequence int64) + type QueuedMergedMessage struct + AllowedMentions discordgo.AllowedMentions + Content string v1.20.6 Sep 3, 2019 Changes in this version + const DBSchema + const EventLoggerPeriodDuration + const EvtGuildState + const GuildRemoveConfigExpire + const MemFreeThreshold + var BatchMemberJobManager = newBatchMemberJobManager() + var BotPlugin = new(botPlugin) + var Cache = cache.New(time.Minute, time.Minute) + var Enabled bool + var ErrGuildNotFound = errors.New("Guild not found") + var ErrGuildNotOnProcess = errors.New("Guild not on process") + var ErrStartingUp = errors.New("Starting up, caches are being filled...") + var EventLogger = &eventLogger + var FlagNodeID string + var MemberFetcher = &memberFetcher + var MessageDeleteQueue = deletequeue.NewQueue() + var NodeConn *node.Conn + var RedisKeyAdmins = "yagpdb_admins" + var RedisKeyReadOnlyAccess = "yagpdb_ro_access" + var Running bool + var ShardManager *dshardmanager.Manager + var Started = time.Now() + var State *dstate.State + var UsingOrchestrator bool + func AdminOrPerm(needed int, userID, channelID int64) (bool, error) + func AdminOrPermMS(ms *dstate.MemberState, channelID int64, needed int) (bool, error) + func BotProbablyHasPermission(guildID int64, channelID int64, permission int) bool + func BotProbablyHasPermissionGS(lock bool, gs *dstate.GuildState, channelID int64, permission int) bool + func CheckDiscordErrRetry(err error) bool + func ConcurrentEventHandler(inner eventsystem.HandlerFuncLegacy) eventsystem.HandlerFuncLegacy + func ContextSession(ctx context.Context) *discordgo.Session + func EmitGuildRemoved(guildID int64) + func EvictGSCache(guildID int64, key GSCacheKey) + func GetMember(guildID, userID int64) (*dstate.MemberState, error) + func GetMembers(guildID int64, userIDs ...int64) ([]*dstate.MemberState, error) + func GetMessages(channelID int64, limit int, deleted bool) ([]*dstate.MessageState, error) + func GetProcessShards() []int + func GetTotalShards() int64 + func GetUsers(guildID int64, ids ...int64) []*discordgo.User + func GetUsersGS(gs *dstate.GuildState, ids ...int64) []*discordgo.User + func GuildCountsFunc() []int + func GuildName(gID int64) (name string) + func GuildShardID(guildID int64) int + func HandleChannelCreate(evt *eventsystem.EventData) + func HandleChannelDelete(evt *eventsystem.EventData) + func HandleChannelUpdate(evt *eventsystem.EventData) + func HandleGuildCreate(evt *eventsystem.EventData) + func HandleGuildDelete(evt *eventsystem.EventData) + func HandleGuildMemberAdd(evt *eventsystem.EventData) + func HandleGuildMemberRemove(evt *eventsystem.EventData) + func HandleGuildMemberUpdate(evt *eventsystem.EventData) + func HandleGuildMembersChunk(data *eventsystem.EventData) + func HandleGuildRoleCreate(evt *eventsystem.EventData) + func HandleGuildRoleRemove(evt *eventsystem.EventData) + func HandleGuildRoleUpdate(evt *eventsystem.EventData) + func HandleGuildUpdate(evt *eventsystem.EventData) + func HandleMessageCreate(evt *eventsystem.EventData) + func HandleRatelimit(evt *eventsystem.EventData) + func HandleReactionAdd(evt *eventsystem.EventData) + func HandleReady(data *eventsystem.EventData) + func HandleResumed(evt *eventsystem.EventData) + func HasReadOnlyAccess(userID int64) (hasAccess bool, err error) + func InitPlugins() + func InvalidateCache(guildID, userID int64) + func IsBotAdmin(userID int64) (isAdmin bool, err error) + func IsGuildOnCurrentProcess(guildID int64) bool + func IsMemberAbove(gs *dstate.GuildState, ms1 *dstate.MemberState, ms2 *dstate.MemberState) bool + func IsMemberAboveRole(gs *dstate.GuildState, ms1 *dstate.MemberState, role *discordgo.Role) bool + func MemberHighestRole(gs *dstate.GuildState, ms *dstate.MemberState) *discordgo.Role + func NodeID() string + func QueueMergedMessage(channelID int64, message string) + func RefreshStatus(session *discordgo.Session) + func Run() + func SendDM(user int64, msg string) error + func SendDMEmbed(user int64, embed *discordgo.MessageEmbed) error + func SendMessage(guildID int64, channelID int64, msg string) (permsOK bool, resp *discordgo.Message, err error) + func SendMessageEmbed(guildID int64, channelID int64, msg *discordgo.MessageEmbed) (permsOK bool, resp *discordgo.Message, err error) + func SendMessageEmbedGS(gs *dstate.GuildState, channelID int64, msg *discordgo.MessageEmbed) (permsOK bool, resp *discordgo.Message, err error) + func SendMessageGS(gs *dstate.GuildState, channelID int64, msg string) (permsOK bool, resp *discordgo.Message, err error) + func SetStatus(streaming, status string) + func SetupStandalone() + func SnowflakeToTime(i int64) time.Time + func StateHandler(evt *eventsystem.EventData) + func Stop(wg *sync.WaitGroup) + func StopAllPlugins(wg *sync.WaitGroup) + type BotInitHandler interface + BotInit func() + type BotStopperHandler interface + StopBot func(wg *sync.WaitGroup) + type DiscordMessages []*dstate.MessageState + func (d DiscordMessages) Len() int + func (d DiscordMessages) Less(i, j int) bool + func (d DiscordMessages) Swap(i, j int) + type GSCacheKey string + type GlobalRatelimitTriggeredEventData struct + Bucket string + Reset time.Time + type LateBotInitHandler interface + LateBotInit func() + type MemWatcher struct + func (mw *MemWatcher) Check() + func (mw *MemWatcher) Run() + type MemberFetchGuildQueue struct + Queue []*MemberFetchRequest + type MemberFetchRequest struct + Guild int64 + Member int64 + WaitingChannels []chan MemberFetchResult + type MemberFetchResult struct + Err error + Member *dstate.MemberState + type NewGuildHandler interface + NewGuild func(guild *discordgo.Guild) error + type NodeImpl struct + func (n *NodeImpl) HandleUserEvent(evt dshardorchestrator.EventType, data interface{}) + func (n *NodeImpl) InitializeShardTransferFrom(shard int) (sessionID string, sequence int64) + func (n *NodeImpl) InitializeShardTransferTo(shard int, sessionID string, sequence int64) + func (n *NodeImpl) LoadGuildState(gs *dstate.GuildState) + func (n *NodeImpl) SendGuilds(shard int) int + func (n *NodeImpl) SessionEstablished(info node.SessionInfo) + func (n *NodeImpl) Shutdown() + func (n *NodeImpl) StartShard(shard int, sessionID string, sequence int64) + func (n *NodeImpl) StartShardTransferFrom(shard int) (numEventsSent int) + func (n *NodeImpl) StopShard(shard int) (sessionID string, sequence int64) + type RemoveGuildHandler interface + RemoveGuild func(guildID int64) error + type ShardMigrationHandler interface + GuildMigrated func(guild *dstate.GuildState, toThisSlave bool) + type ShardMigrationReceiver interface + ShardMigrationReceive func(evt dshardorchestrator.EventType, data interface{}) + type ShardMigrationSender interface + ShardMigrationSend func(shard int) int