Documentation
¶
Index ¶
- Constants
- Variables
- func ASCIIStarfield(sett *storage.GuildSettings, name string, isImpostor bool, count int) string
- func CommandPrefixSetting(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func ConstructEmbedForCommand(prefix string, cmd command.Command, sett *storage.GuildSettings) *discordgo.MessageEmbed
- func ConstructEmbedForSetting(value string, setting setting.Setting, sett *storage.GuildSettings) discordgo.MessageEmbed
- func MessageDeleteWorker(s *discordgo.Session, msgChannelID, msgID string, waitDur time.Duration)
- func RecordDiscordRequestsByCounts(client *redis.Client, counts *task.MuteDeafenSuccessCounts)
- func RemovePendingDGSEdit(messageID string)
- func SettingAdminUserIDs(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingAutoRefresh(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingDelays(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingDisplayRoomCode(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingLanguage(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingLeaderboardMin(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingLeaderboardNameMention(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingLeaderboardSize(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingMapVersion(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingMatchSummary(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingMatchSummaryChannel(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingMuteSpectators(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingPermissionRoleIDs(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingUnmuteDeadDuringTasks(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func SettingVoiceRules(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...) bool
- func StartHealthCheckServer(port string)
- func TrimEmbedFields(fields []*discordgo.MessageEmbedField) []*discordgo.MessageEmbedField
- func ValidFields(me *discordgo.MessageEmbed) bool
- type AlivenessEmojis
- type Bot
- func (bot *Bot) CheckOrFetchCachedUserData(userID, guildID string) (string, string, string)
- func (bot *Bot) Close()
- func (bot *Bot) GameStatsEmbed(guildID, matchID, connectCode string, sett *storage.GuildSettings, ...) *discordgo.MessageEmbed
- func (bot *Bot) GuildStatsEmbed(guildID string, sett *storage.GuildSettings, prem premium.Tier) *discordgo.MessageEmbed
- func (bot *Bot) HandleCommand(isAdmin, isPermissioned bool, sett *storage.GuildSettings, ...)
- func (bot *Bot) HandleSettingsCommand(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, ...)
- func (bot *Bot) MentionWithCacheData(userID, guildID string, sett *storage.GuildSettings) string
- func (bot *Bot) RefreshGameStateMessage(gsr GameStateRequest, sett *storage.GuildSettings)
- func (bot *Bot) SubscribeToGameByConnectCode(guildID, connectCode string, endGameChannel chan EndGameMessage)
- func (bot *Bot) UserStatsEmbed(userID, guildID string, sett *storage.GuildSettings, prem premium.Tier) *discordgo.MessageEmbed
- type Emoji
- type EndGameMessage
- type GalactusClient
- type GameState
- func (dgs *GameState) AddAllReactions(s *discordgo.Session, emojis []Emoji)
- func (dgs *GameState) AddReaction(s *discordgo.Session, emoji string)
- func (dgs *GameState) AttemptPairingByMatchingNames(data amongus.PlayerData) string
- func (dgs *GameState) AttemptPairingByUserIDs(data amongus.PlayerData, userIDs map[string]interface{}) string
- func (dgs *GameState) ClearAllPlayerData()
- func (dgs *GameState) ClearPlayerData(userID string)
- func (dgs *GameState) ClearPlayerDataByPlayerName(playerName string)
- func (dgs *GameState) CreateMessage(s *discordgo.Session, me *discordgo.MessageEmbed, channelID string, ...)
- func (dgs *GameState) DeleteGameStateMsg(s *discordgo.Session)
- func (dgs GameState) Edit(s *discordgo.Session, me *discordgo.MessageEmbed) bool
- func (dgs *GameState) Exists() bool
- func (dgs *GameState) GetCountLinked() int
- func (dgs *GameState) GetUser(userID string) (UserData, error)
- func (dgs *GameState) IsReactionTo(m *discordgo.MessageReactionAdd) bool
- func (dgs *GameState) RemoveAllReactions(s *discordgo.Session)
- func (dgs *GameState) Reset()
- func (dgs *GameState) SameChannel(channelID string) bool
- func (dgs *GameState) ToEmojiEmbedFields(emojis AlivenessEmojis, sett *storage.GuildSettings) []*discordgo.MessageEmbedField
- func (dgs *GameState) UpdateUserData(userID string, data UserData)
- func (dgs *GameState) UserDataSize() int
- type GameStateMessage
- type GameStateRequest
- type HandlePriority
- type MapImage
- type MapItem
- type RedisInterface
- func (redisInterface *RedisInterface) AddUniqueGuildCounter(guildID string)
- func (redisInterface *RedisInterface) AddUsernameLink(guildID, userID, userName string) error
- func (redisInterface *RedisInterface) CheckPointer(pointer string) string
- func (redisInterface *RedisInterface) Close() error
- func (redisInterface *RedisInterface) DeleteDiscordGameState(dgs *GameState)
- func (redisInterface *RedisInterface) DeleteLinksByUserID(guildID, userID string) error
- func (redisInterface *RedisInterface) GetDiscordGameStateAndLock(gsr GameStateRequest) (*redislock.Lock, *GameState)
- func (redisInterface *RedisInterface) GetReadOnlyDiscordGameState(gsr GameStateRequest) *GameState
- func (redisInterface *RedisInterface) GetUsernameOrUserIDMappings(guildID, key string) map[string]interface{}
- func (redisInterface *RedisInterface) Init(params interface{}) error
- func (redisInterface *RedisInterface) LeaveUniqueGuildCounter(guildID string)
- func (redisInterface *RedisInterface) LoadAllActiveGames(guildID string) []string
- func (redisInterface *RedisInterface) LockSnowflake(snowflake string) *redislock.Lock
- func (redisInterface *RedisInterface) LockVoiceChanges(connectCode string, dur time.Duration) *redislock.Lock
- func (redisInterface *RedisInterface) RefreshActiveGame(guildID, connectCode string)
- func (redisInterface *RedisInterface) RemoveOldGame(guildID, connectCode string)
- func (redisInterface *RedisInterface) SetDiscordGameState(data *GameState, lock *redislock.Lock)
- type TrackingChannel
- type User
- type UserData
- type UserDataSet
- type UserPatchParameters
Constants ¶
const ASCIICrewmate = "" +
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣠⣤⣤⣤⣤⣤⣤⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀⠀ ⢀⣴⣿⡿⠛⠉⠙⠛⠛⠛⠻⢿⣿⣷⣤⡀⠀⠀⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀⠀ ⣼⣿⠋⠀⠀⠀⠀ ⠀⢀⣀⣀⠈⢻⣿⣿⡄⠀⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀ ⣸⣿ ⠀⠀⣠⣶⣾⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣄⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀ ⣿⣿ ⠀⢰⣿⣿⣯⠁⠀⠀⠀⠀⠀⠀⠀ ⠈⠙⢿⣷⡄⠀\n" +
"⠀⠀⣀⣤⣴⣶⣶⣿⡟⠀⠀⢸⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣿⣷⠀\n" +
"⠀⢰⣿⡟⠋⠉⣹⣿⡇⠀⠀⠘⣿⣿⣿⣿⣷⣦⣤⣤⣤⣶⣶⣶⣶⣿⣿⣿⠀\n" +
"⠀⢸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀\n" +
"⠀⣸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣿⡿⠿⠿⠛⢻⣿⡇⠀⠀\n" +
"⠀⣿⣿⠁⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣧⠀⠀\n" +
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣿⠀⠀\n" +
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣿⠀⠀\n" +
"⠀⢿⣿⡆⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⢸⣿⡇⠀⠀\n" +
"⠀⠸⣿⣧⡀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣿⣿⠃⠀⠀\n" +
"⠀⠀⠛⢿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⣰⣿⣿⣷⣶⣶⣶⣶⠶⢠⣿⣿⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⣽⣿⡏⠁⠀⠀⢸⣿⡇⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⢹⣿⡆⠀⠀⠀⣸⣿⠇⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀⢿⣿⣦⣄⣀⣠⣴⣿⣿ ⠀⠈⠻⣿⣿⣿⡿⠏⠀⠀⠀⠀\n" +
"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠻⠿⠿⠿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀"
const BaseMapURL = "https://github.com/killerbad/MuteBot/blob/main/assets/maps/"
const BasePremiumURL = "https://automute.us/premium?guild="
const DefaultMaxActiveGames = 150
const DeferredEditSeconds = 2
bumped for public rollout. Don't need to update the status message more than once every 2 secs prob
const GameTimeoutSeconds = 900
15 minute timeout
const ISO8601 = "2006-01-02T15:04:05-0700"
const LinearBackoffMs = 100
const LockTimeoutMs = 250
const (
MaxDebugMessageSize = 1980
)
const MaxRetries = 10
const SnowflakeLockMs = 3000
Variables ¶
var AllEmojisStartup []*discordgo.Emoji = nil
var BotInvites = []string{ "https://discord.com/api/oauth2/authorize?client_id=780323275624546304&permissions=12582912&scope=bot", "https://discord.com/api/oauth2/authorize?client_id=780589033033302036&permissions=12582912&scope=bot", "https://discord.com/api/oauth2/authorize?client_id=780323801173983262&permissions=12582912&scope=bot"} // amu3
if you're reading this, adding these bots won't help you. Galactus+AutoMuteUs verify the premium status internally before using these bots ;)
var DeferredEdits = make(map[string]*discordgo.MessageEmbed)
var DeferredEditsLock = sync.Mutex{}
var EmojiLock = sync.Mutex{}
var EmojiNums = []string{":one:", ":two:", ":three:"}
var GlobalAlivenessEmojis = AlivenessEmojis{ // contains filtered or unexported fields }
GlobalAlivenessEmojis keys are IsAlive, Color
var GlobalReady = false
var MatchIDRegex = regexp.MustCompile(`^[A-Z0-9]{8}:[0-9]+$`)
Functions ¶
func ASCIIStarfield ¶
func CommandPrefixSetting ¶
func CommandPrefixSetting(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func ConstructEmbedForCommand ¶
func ConstructEmbedForCommand(prefix string, cmd command.Command, sett *storage.GuildSettings) *discordgo.MessageEmbed
TODO cache/preconstruct these (no reason to make them fresh everytime help is called, except for the prefix...)
func ConstructEmbedForSetting ¶
func ConstructEmbedForSetting(value string, setting setting.Setting, sett *storage.GuildSettings) discordgo.MessageEmbed
func MessageDeleteWorker ¶
func RecordDiscordRequestsByCounts ¶
func RecordDiscordRequestsByCounts(client *redis.Client, counts *task.MuteDeafenSuccessCounts)
func RemovePendingDGSEdit ¶
func RemovePendingDGSEdit(messageID string)
func SettingAdminUserIDs ¶
func SettingAdminUserIDs(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingAutoRefresh ¶
func SettingAutoRefresh(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingDelays ¶
func SettingDelays(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingDisplayRoomCode ¶
func SettingDisplayRoomCode(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingLanguage ¶
func SettingLanguage(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingLeaderboardMin ¶
func SettingLeaderboardMin(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingLeaderboardNameMention ¶
func SettingLeaderboardNameMention(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingLeaderboardSize ¶
func SettingLeaderboardSize(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingMapVersion ¶
func SettingMapVersion(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingMatchSummary ¶
func SettingMatchSummary(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingMatchSummaryChannel ¶
func SettingMatchSummaryChannel(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingMuteSpectators ¶
func SettingMuteSpectators(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingPermissionRoleIDs ¶
func SettingPermissionRoleIDs(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingUnmuteDeadDuringTasks ¶
func SettingUnmuteDeadDuringTasks(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func SettingVoiceRules ¶
func SettingVoiceRules(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string) bool
func StartHealthCheckServer ¶
func StartHealthCheckServer(port string)
func TrimEmbedFields ¶
func TrimEmbedFields(fields []*discordgo.MessageEmbedField) []*discordgo.MessageEmbedField
func ValidFields ¶
func ValidFields(me *discordgo.MessageEmbed) bool
Types ¶
type Bot ¶
type Bot struct { // mapping of socket connections to the game connect codes ConnsToGames map[string]string StatusEmojis AlivenessEmojis EndGameChannels map[string]chan EndGameMessage ChannelsMapLock sync.RWMutex PrimarySession *discordgo.Session GalactusClient *GalactusClient RedisInterface *RedisInterface StorageInterface *storage.StorageInterface PostgresInterface *storage.PsqlInterface // contains filtered or unexported fields }
func MakeAndStartBot ¶
func MakeAndStartBot(version, commit, botToken, url, emojiGuildID string, extraTokens []string, numShards, shardID int, redisInterface *RedisInterface, storageInterface *storage.StorageInterface, psql *storage.PsqlInterface, gc *GalactusClient, logPath string) *Bot
MakeAndStartBot does what it sounds like TODO collapse these fields into proper structs?
func (*Bot) CheckOrFetchCachedUserData ¶
func (*Bot) GameStatsEmbed ¶
func (bot *Bot) GameStatsEmbed(guildID, matchID, connectCode string, sett *storage.GuildSettings, prem premium.Tier) *discordgo.MessageEmbed
func (*Bot) GuildStatsEmbed ¶
func (bot *Bot) GuildStatsEmbed(guildID string, sett *storage.GuildSettings, prem premium.Tier) *discordgo.MessageEmbed
func (*Bot) HandleCommand ¶
func (*Bot) HandleSettingsCommand ¶
func (bot *Bot) HandleSettingsCommand(s *discordgo.Session, m *discordgo.MessageCreate, sett *storage.GuildSettings, args []string, prem bool)
func (*Bot) MentionWithCacheData ¶
func (bot *Bot) MentionWithCacheData(userID, guildID string, sett *storage.GuildSettings) string
func (*Bot) RefreshGameStateMessage ¶
func (bot *Bot) RefreshGameStateMessage(gsr GameStateRequest, sett *storage.GuildSettings)
func (*Bot) SubscribeToGameByConnectCode ¶
func (bot *Bot) SubscribeToGameByConnectCode(guildID, connectCode string, endGameChannel chan EndGameMessage)
func (*Bot) UserStatsEmbed ¶
func (bot *Bot) UserStatsEmbed(userID, guildID string, sett *storage.GuildSettings, prem premium.Tier) *discordgo.MessageEmbed
type Emoji ¶
Emoji struct for discord
func (*Emoji) DownloadAndBase64Encode ¶
DownloadAndBase64Encode does what it sounds like
func (*Emoji) FormatForInline ¶
FormatForInline does what it sounds like
func (*Emoji) FormatForReaction ¶
FormatForReaction does what it sounds like
func (*Emoji) GetDiscordCDNUrl ¶
GetDiscordCDNUrl does what it sounds like
type EndGameMessage ¶
type EndGameMessage bool
type GalactusClient ¶
type GalactusClient struct { Address string // contains filtered or unexported fields }
func NewGalactusClient ¶
func NewGalactusClient(address string) (*GalactusClient, error)
func (*GalactusClient) AddToken ¶
func (gc *GalactusClient) AddToken(token string) error
func (*GalactusClient) ModifyUsers ¶
func (gc *GalactusClient) ModifyUsers(guildID, connectCode string, request task.UserModifyRequest, lock *redislock.Lock) *task.MuteDeafenSuccessCounts
type GameState ¶
type GameState struct { GuildID string `json:"guildID"` ConnectCode string `json:"connectCode"` Linked bool `json:"linked"` Running bool `json:"running"` Subscribed bool `json:"subscribed"` MatchID int64 `json:"matchID"` MatchStartUnix int64 `json:"matchStartUnix"` UserData UserDataSet `json:"userData"` Tracking TrackingChannel `json:"tracking"` GameStateMsg GameStateMessage `json:"gameStateMessage"` AmongUsData amongus.AmongUsData `json:"amongUsData"` }
func NewDiscordGameState ¶
func (*GameState) AddAllReactions ¶
func (*GameState) AddReaction ¶
func (*GameState) AttemptPairingByMatchingNames ¶
func (dgs *GameState) AttemptPairingByMatchingNames(data amongus.PlayerData) string
func (*GameState) AttemptPairingByUserIDs ¶
func (dgs *GameState) AttemptPairingByUserIDs(data amongus.PlayerData, userIDs map[string]interface{}) string
func (*GameState) ClearAllPlayerData ¶
func (dgs *GameState) ClearAllPlayerData()
func (*GameState) ClearPlayerData ¶
func (*GameState) ClearPlayerDataByPlayerName ¶
func (*GameState) CreateMessage ¶
func (*GameState) DeleteGameStateMsg ¶
func (GameState) Edit ¶
Note this is not a pointer; we never expect the underlying DGS to change on an edit
func (*GameState) GetCountLinked ¶
func (*GameState) IsReactionTo ¶
func (dgs *GameState) IsReactionTo(m *discordgo.MessageReactionAdd) bool
func (*GameState) RemoveAllReactions ¶
func (*GameState) SameChannel ¶
func (*GameState) ToEmojiEmbedFields ¶
func (dgs *GameState) ToEmojiEmbedFields(emojis AlivenessEmojis, sett *storage.GuildSettings) []*discordgo.MessageEmbedField
func (*GameState) UpdateUserData ¶
func (*GameState) UserDataSize ¶
type GameStateMessage ¶
type GameStateMessage struct { MessageID string `json:"messageID"` MessageChannelID string `json:"messageChannelID"` MessageAuthorID string `json:"messageAuthorID"` LeaderID string `json:"leaderID"` }
func MakeGameStateMessage ¶
func MakeGameStateMessage() GameStateMessage
type GameStateRequest ¶
type HandlePriority ¶
type HandlePriority int
const ( NoPriority HandlePriority = 0 AlivePriority HandlePriority = 1 DeadPriority HandlePriority = 2 )
type MapItem ¶
func NewMapItem ¶
type RedisInterface ¶
type RedisInterface struct {
// contains filtered or unexported fields
}
func (*RedisInterface) AddUniqueGuildCounter ¶
func (redisInterface *RedisInterface) AddUniqueGuildCounter(guildID string)
func (*RedisInterface) AddUsernameLink ¶
func (redisInterface *RedisInterface) AddUsernameLink(guildID, userID, userName string) error
func (*RedisInterface) CheckPointer ¶
func (redisInterface *RedisInterface) CheckPointer(pointer string) string
func (*RedisInterface) Close ¶
func (redisInterface *RedisInterface) Close() error
func (*RedisInterface) DeleteDiscordGameState ¶
func (redisInterface *RedisInterface) DeleteDiscordGameState(dgs *GameState)
func (*RedisInterface) DeleteLinksByUserID ¶
func (redisInterface *RedisInterface) DeleteLinksByUserID(guildID, userID string) error
func (*RedisInterface) GetDiscordGameStateAndLock ¶
func (redisInterface *RedisInterface) GetDiscordGameStateAndLock(gsr GameStateRequest) (*redislock.Lock, *GameState)
func (*RedisInterface) GetReadOnlyDiscordGameState ¶
func (redisInterface *RedisInterface) GetReadOnlyDiscordGameState(gsr GameStateRequest) *GameState
need at least one of these fields to fetch
func (*RedisInterface) GetUsernameOrUserIDMappings ¶
func (redisInterface *RedisInterface) GetUsernameOrUserIDMappings(guildID, key string) map[string]interface{}
func (*RedisInterface) Init ¶
func (redisInterface *RedisInterface) Init(params interface{}) error
func (*RedisInterface) LeaveUniqueGuildCounter ¶
func (redisInterface *RedisInterface) LeaveUniqueGuildCounter(guildID string)
func (*RedisInterface) LoadAllActiveGames ¶
func (redisInterface *RedisInterface) LoadAllActiveGames(guildID string) []string
only deletes from the guild's responsibility, NOT the entire guild counter!
func (*RedisInterface) LockSnowflake ¶
func (redisInterface *RedisInterface) LockSnowflake(snowflake string) *redislock.Lock
func (*RedisInterface) LockVoiceChanges ¶
func (*RedisInterface) RefreshActiveGame ¶
func (redisInterface *RedisInterface) RefreshActiveGame(guildID, connectCode string)
func (*RedisInterface) RemoveOldGame ¶
func (redisInterface *RedisInterface) RemoveOldGame(guildID, connectCode string)
func (*RedisInterface) SetDiscordGameState ¶
func (redisInterface *RedisInterface) SetDiscordGameState(data *GameState, lock *redislock.Lock)
type TrackingChannel ¶
type TrackingChannel struct { ChannelID string `json:"channelID"` ChannelName string `json:"channelName"` }
func (TrackingChannel) ToDescString ¶
func (tc TrackingChannel) ToDescString(sett *storage.GuildSettings) string
func (TrackingChannel) ToStatusString ¶
func (tc TrackingChannel) ToStatusString(sett *storage.GuildSettings) string
type User ¶
type User struct { Nick string `json:"Nick"` UserID string `json:"UserID"` UserName string `json:"UserName"` Discriminator string `json:"Discriminator"` }
User struct
type UserData ¶
type UserData struct { User User `json:"User"` ShouldBeMute bool `json:"ShouldBeMute"` ShouldBeDeaf bool `json:"ShouldBeDeaf"` InGameName string `json:"PlayerName"` }
UserData struct
func (*UserData) GetNickName ¶
func (*UserData) GetPlayerName ¶
func (*UserData) GetUserName ¶
func (*UserData) Link ¶
func (user *UserData) Link(player amongus.PlayerData)