Documentation ¶
Index ¶
- Constants
- Variables
- func AdminOrPerm(needed int, userID, channelID int64) (bool, error)
- func ConcurrentEventHandler(inner eventsystem.Handler) eventsystem.Handler
- func ContextRedis(ctx context.Context) *redis.Client
- func ContextSession(ctx context.Context) *discordgo.Session
- func EmitGuildRemoved(client *redis.Client, guildID int64)
- func GetCreatePrivateChannel(user int64) (*discordgo.Channel, error)
- func GetMember(guildID, userID int64) (*discordgo.Member, error)
- func GetMembers(guildID int64, userIDs ...int64) ([]*discordgo.Member, error)
- func GuildCountsFunc() []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 HandleGuildMemberUpdate(evt *eventsystem.EventData)
- func HandleGuildRoleCreate(evt *eventsystem.EventData)
- func HandleGuildRoleRemove(evt *eventsystem.EventData)
- func HandleGuildRoleUpdate(evt *eventsystem.EventData)
- func HandleGuildUpdate(evt *eventsystem.EventData)
- func HandlePresenceUpdate(evt *eventsystem.EventData)
- func HandleReady(evt *eventsystem.EventData)
- func InvalidateCache(client *redis.Client, guildID, userID int64)
- func MonitorLoading()
- func QueueMergedMessage(channelID int64, message string)
- func RedisWrapper(inner eventsystem.Handler) eventsystem.Handler
- func Run()
- func SendDM(user int64, msg string) error
- func Setup()
- func StateHandler(evt *eventsystem.EventData)
- func Stop(wg *sync.WaitGroup)
- type BotStartedHandler
- type BotStarterHandler
- type BotStopperHandler
- type DiscordMessages
- type MemberFetchGuildQueue
- type MemberFetchRequest
- type MemberFetchResult
- type NewGuildHandler
- type Plugin
- type RemoveGuildHandler
- type WrappedMessage
Constants ¶
const EventLoggerPeriodDuration = time.Second * 10
const ( // How long after removing a guild the config for it gets cleared GuildRemoveConfigExpire = 60 * 60 * 24 // <- 1 day )
Variables ¶
var ( // When the bot was started Started = time.Now() Running bool State *dstate.State ShardManager *dshardmanager.Manager StateHandlerPtr *eventsystem.Handler )
var ( ErrStartingUp = errors.New("Starting up, caches are being filled...") ErrGuildNotFound = errors.New("Guild not found") )
var (
Cache = cache.New(time.Minute, time.Minute)
)
var (
EventLogger = &eventLogger{}
)
var ( MemberFetcher = &memberFetcher{ fetching: make(map[int64]*MemberFetchGuildQueue), notFetching: make(map[int64]*MemberFetchGuildQueue), } )
Functions ¶
func ConcurrentEventHandler ¶
func ConcurrentEventHandler(inner eventsystem.Handler) eventsystem.Handler
func EmitGuildRemoved ¶
func GuildCountsFunc ¶
func GuildCountsFunc() []int
func HandleChannelCreate ¶
func HandleChannelCreate(evt *eventsystem.EventData)
func HandleChannelDelete ¶
func HandleChannelDelete(evt *eventsystem.EventData)
func HandleChannelUpdate ¶
func HandleChannelUpdate(evt *eventsystem.EventData)
func HandleGuildCreate ¶
func HandleGuildCreate(evt *eventsystem.EventData)
func HandleGuildDelete ¶
func HandleGuildDelete(evt *eventsystem.EventData)
func HandleGuildMemberUpdate ¶
func HandleGuildMemberUpdate(evt *eventsystem.EventData)
func HandleGuildRoleCreate ¶
func HandleGuildRoleCreate(evt *eventsystem.EventData)
func HandleGuildRoleRemove ¶
func HandleGuildRoleRemove(evt *eventsystem.EventData)
func HandleGuildRoleUpdate ¶
func HandleGuildRoleUpdate(evt *eventsystem.EventData)
func HandleGuildUpdate ¶
func HandleGuildUpdate(evt *eventsystem.EventData)
func HandlePresenceUpdate ¶
func HandlePresenceUpdate(evt *eventsystem.EventData)
Makes sure the member is always in state when coming online
func HandleReady ¶
func HandleReady(evt *eventsystem.EventData)
func InvalidateCache ¶
func MonitorLoading ¶
func MonitorLoading()
func QueueMergedMessage ¶
func RedisWrapper ¶
func RedisWrapper(inner eventsystem.Handler) eventsystem.Handler
func StateHandler ¶
func StateHandler(evt *eventsystem.EventData)
StateHandler updates the world state use AddHandlerBefore to add handler before this one, otherwise they will alwyas be after
Types ¶
type BotStartedHandler ¶
type BotStartedHandler interface {
BotStarted()
}
Fired after the bot has connected all shards
type BotStarterHandler ¶
type BotStarterHandler interface {
StartBot()
}
Fired when the bot it starting up, not for the webserver
type BotStopperHandler ¶
type DiscordMessages ¶
type DiscordMessages []*dstate.MessageState
func (DiscordMessages) Len ¶
func (d DiscordMessages) Len() int
Len is the number of elements in the collection.
func (DiscordMessages) Less ¶
func (d DiscordMessages) Less(i, j int) bool
Less reports whether the element with index i should sort before the element with index j.
func (DiscordMessages) Swap ¶
func (d DiscordMessages) Swap(i, j int)
Swap swaps the elements with indexes i and j.
type MemberFetchGuildQueue ¶
type MemberFetchGuildQueue struct {
Queue []*MemberFetchRequest
}
type MemberFetchRequest ¶
type MemberFetchRequest struct { Member int64 Guild int64 WaitingChannels []chan MemberFetchResult }
type MemberFetchResult ¶
type NewGuildHandler ¶
Used for intializing stuff for new servers
type Plugin ¶
type Plugin interface { // Called when the plugin is supposed to be initialized // That is add comnands, discord event handlers InitBot() Name() string }
type RemoveGuildHandler ¶
Used for deleting configuration about servers
type WrappedMessage ¶
func GetMessages ¶
func GetMessages(channelID int64, limit int, deleted bool) ([]*WrappedMessage, error)
GetMessages Gets messages from state if possible, if not then it retrieves from the discord api Puts the messages in the state aswell