Documentation
¶
Index ¶
- Constants
- Variables
- func BalanceWarningFields() []*discordgo.MessageEmbedField
- func CheckAccount(ssoCookie string, userID string, captchaAPIKey string) (models.Status, error)
- func CheckAccountAge(ssoCookie string) (int, int, int, int64, error)
- func CheckAccounts(s *discordgo.Session)
- func CheckAndNotifyBalance(s *discordgo.Session, userID string, balance float64)
- func CheckSSOCookieExpiration(expirationTimestamp int64) (time.Duration, error)
- func CheckVIPStatus(ssoCookie string) (bool, error)
- func CleanupInactiveUsers()
- func CleanupOldAnalyticsData(retentionDays int) error
- func CleanupOldRateLimitData()
- func CreateAnnouncementEmbed() *discordgo.MessageEmbed
- func DecodeSSOCookie(encodedStr string) (int64, error)
- func DisableUserCaptcha(s *discordgo.Session, userID string, reason string) error
- func EmbedTitleFromStatus(status models.Status) string
- func FormatDuration(d time.Duration) string
- func FormatExpirationTime(expirationTimestamp int64) string
- func GenerateHeaders(ssoCookie string) map[string]string
- func GetCheckStatus(isCheckDisabled bool) string
- func GetColorForStatus(status models.Status, isExpiredCookie bool, isCheckDisabled bool) int
- func GetCooldownDuration(userSettings models.UserSettings, notificationType string, ...) time.Duration
- func GetDailyStats(day string) (map[string]interface{}, error)
- func GetDefaultHTTPClient() *http.Client
- func GetDefaultSettings() (models.UserSettings, error)
- func GetGatewayBotInfo(token string) (*discordgo.GatewayBotResponse, error)
- func GetInstallationStats() (serverCount int64, directCount int64, err error)
- func GetLongTimeoutHTTPClient() *http.Client
- func GetNotificationChannel(s *discordgo.Session, account models.Account, userSettings models.UserSettings) (string, error)
- func GetResponseChannel(s *discordgo.Session, userID string, i *discordgo.InteractionCreate) (string, error)
- func GetStatusDescription(status models.Status, accountTitle string, ban models.Ban) string
- func GetStatusIcon(status models.Status) string
- func GetUserCaptchaKey(userID string) (string, float64, error)
- func GetUserID(i *discordgo.InteractionCreate) (string, error)
- func GetUserRateLimitStatus(userID string) (bool, time.Duration, int)
- func GetUserSettings(userID string) (models.UserSettings, error)
- func GetUserStats(userID string, days int) (map[string]interface{}, error)
- func HandleStatusChange(s *discordgo.Session, account models.Account, newStatus models.Status, ...)
- func InitHTTPClients()
- func InitializeServices()
- func IsServiceEnabled(provider string) bool
- func IsUserRateLimited(userID string) bool
- func LogAccountCheck(accountID uint, userID string, status models.Status, success bool, ...)
- func LogCommandExecution(commandName, userID, guildID string, success bool, responseTimeMs int64, ...)
- func LogInstallationStats(s *discordgo.Session)
- func LogNotification(userID string, accountID uint, notificationType string, success bool)
- func LogStatusChange(accountID uint, userID string, status models.Status, ...)
- func NotifyAdmin(s *discordgo.Session, message string)
- func NotifyAdminWithCooldown(s *discordgo.Session, message string, cooldownDuration time.Duration)
- func NotifyCookieExpiringSoon(s *discordgo.Session, accounts []models.Account) error
- func NotifyNewInstallation(s *discordgo.Session, context string)
- func NotifyUserAboutDisabledAccount(s *discordgo.Session, account models.Account, reason string)
- func QueueNotification(userID string, content string)
- func RemoveCaptchaKey(userID string) error
- func ReportCapsolverTaskResult(token string, isValid bool, errorMessage string)
- func ScheduleBalanceChecks(s *discordgo.Session)
- func ScheduleTempBanNotification(s *discordgo.Session, account models.Account, duration string)
- func SendAnnouncementToAllUsers(s *discordgo.Session) error
- func SendConsolidatedDailyUpdate(s *discordgo.Session, userID string, userSettings models.UserSettings, ...)
- func SendEmbedToUser(s *discordgo.Session, userID string, i *discordgo.InteractionCreate, ...) error
- func SendGlobalAnnouncement(s *discordgo.Session, userID string) error
- func SendMessageToUser(s *discordgo.Session, userID string, i *discordgo.InteractionCreate, ...) error
- func SendNotification(s *discordgo.Session, account models.Account, embed *discordgo.MessageEmbed, ...) error
- func StartAdminAPI()
- func StartNotificationProcessor(discord *discordgo.Session)
- func StoreCapsolverTaskInfo(taskID, token string)
- func TrackMessageFailure(userID string, errorMessage string)
- func TrackUserInteraction(s *discordgo.Session, i *discordgo.InteractionCreate) error
- func UpdateCaptchaUsage(userID string) error
- func ValidateCaptchaKey(apiKey, provider string) (bool, float64, error)
- func ValidateDefaultCapsolverConfig() error
- func VerifyEZCaptchaConfig() bool
- func VerifySSOCookie(ssoCookie string) bool
- type AccountValidationResult
- type AdaptiveRateLimits
- type CapsolverSolver
- type CaptchaSolver
- type EZCaptchaSolver
- type InstallContext
- type NotificationConfig
- type NotificationItem
- type NotificationLimiter
- type NotificationQueue
- type NotificationState
- type ShardManager
- type TwoCaptchaSolver
- type UserBackoff
Constants ¶
View Source
const ( CapsolverCreateEndpoint = "https://api.capsolver.com/createTask" CapsolverResultEndpoint = "https://api.capsolver.com/getTaskResult" CapsolverFeedbackEndpoint = "https://api.capsolver.com/feedbackTask" EZCaptchaCreateEndpoint = "https://api.ez-captcha.com/createTask" EZCaptchaResultEndpoint = "https://api.ez-captcha.com/getTaskResult" TwoCaptchaCreateEndpoint = "https://api.2captcha.com/createTask" TwoCaptchaResultEndpoint = "https://api.2captcha.com/getTaskResult" MaxRetries = 6 RetryInterval = 10 * time.Second )
Variables ¶
View Source
var (
DBMutex sync.Mutex
)
Functions ¶
func BalanceWarningFields ¶
func BalanceWarningFields() []*discordgo.MessageEmbedField
func CheckAccount ¶
func CheckAccounts ¶
func CheckAndNotifyBalance ¶
func CheckVIPStatus ¶
func CleanupInactiveUsers ¶
func CleanupInactiveUsers()
func CleanupOldAnalyticsData ¶
func CleanupOldRateLimitData ¶
func CleanupOldRateLimitData()
func CreateAnnouncementEmbed ¶
func CreateAnnouncementEmbed() *discordgo.MessageEmbed
func DecodeSSOCookie ¶
func DisableUserCaptcha ¶
func EmbedTitleFromStatus ¶
func FormatDuration ¶
func FormatExpirationTime ¶
func GenerateHeaders ¶
func GetCheckStatus ¶
func GetColorForStatus ¶
func GetCooldownDuration ¶
func GetDailyStats ¶
func GetDefaultHTTPClient ¶
func GetDefaultSettings ¶
func GetDefaultSettings() (models.UserSettings, error)
func GetGatewayBotInfo ¶ added in v1.0.1
func GetGatewayBotInfo(token string) (*discordgo.GatewayBotResponse, error)
GetGatewayBotInfo retrieves the gateway bot info from Discord
func GetInstallationStats ¶
func GetNotificationChannel ¶
func GetResponseChannel ¶
func GetStatusDescription ¶
func GetStatusIcon ¶
func GetUserSettings ¶
func GetUserSettings(userID string) (models.UserSettings, error)
func HandleStatusChange ¶
func InitHTTPClients ¶
func InitHTTPClients()
func InitializeServices ¶
func InitializeServices()
func IsServiceEnabled ¶
func IsUserRateLimited ¶
func LogAccountCheck ¶
func LogCommandExecution ¶
func LogInstallationStats ¶
func LogNotification ¶
func LogStatusChange ¶
func NotifyAdmin ¶
func NotifyAdminWithCooldown ¶
func NotifyNewInstallation ¶
func QueueNotification ¶
func RemoveCaptchaKey ¶
func ScheduleBalanceChecks ¶
func SendEmbedToUser ¶
func SendEmbedToUser(s *discordgo.Session, userID string, i *discordgo.InteractionCreate, embed *discordgo.MessageEmbed) error
func SendGlobalAnnouncement ¶
func SendMessageToUser ¶
func SendNotification ¶
func StartAdminAPI ¶
func StartAdminAPI()
func StoreCapsolverTaskInfo ¶
func StoreCapsolverTaskInfo(taskID, token string)
func TrackMessageFailure ¶
func TrackUserInteraction ¶
func TrackUserInteraction(s *discordgo.Session, i *discordgo.InteractionCreate) error
func UpdateCaptchaUsage ¶
func ValidateDefaultCapsolverConfig ¶
func ValidateDefaultCapsolverConfig() error
func VerifyEZCaptchaConfig ¶
func VerifyEZCaptchaConfig() bool
func VerifySSOCookie ¶
Types ¶
type AccountValidationResult ¶
type AccountValidationResult struct {
IsValid bool
Created int64
IsVIP bool
ExpiresAt int64
ProfileData map[string]interface{}
}
func ValidateAndGetAccountInfo ¶
func ValidateAndGetAccountInfo(ssoCookie string) (*AccountValidationResult, error)
type AdaptiveRateLimits ¶
type AdaptiveRateLimits struct {
sync.RWMutex
UserBackoffs map[string]*UserBackoff
BaseLimit int
HistoryWindow time.Duration
}
func (*AdaptiveRateLimits) GetBackoffDuration ¶
func (a *AdaptiveRateLimits) GetBackoffDuration(userID string) time.Duration
type CapsolverSolver ¶
func (*CapsolverSolver) SolveReCaptchaV2 ¶
func (s *CapsolverSolver) SolveReCaptchaV2(siteKey, pageURL string) (string, error)
type CaptchaSolver ¶
func GetCaptchaSolver ¶
func GetCaptchaSolver(userID string) (CaptchaSolver, error)
func NewCaptchaSolver ¶
func NewCaptchaSolver(apiKey, provider string) (CaptchaSolver, error)
type EZCaptchaSolver ¶
func (*EZCaptchaSolver) SolveReCaptchaV2 ¶
func (s *EZCaptchaSolver) SolveReCaptchaV2(siteKey, pageURL string) (string, error)
type InstallContext ¶
type InstallContext string
const ( ServerContext InstallContext = "server" DirectContext InstallContext = "direct" )
func GetInstallContext ¶
func GetInstallContext(i *discordgo.InteractionCreate) InstallContext
type NotificationConfig ¶
type NotificationItem ¶
type NotificationLimiter ¶
func NewNotificationLimiter ¶
func NewNotificationLimiter() *NotificationLimiter
func (*NotificationLimiter) CanSendNotification ¶
func (nl *NotificationLimiter) CanSendNotification(userID string, notificationType string) bool
type NotificationQueue ¶
type NotificationQueue struct {
// contains filtered or unexported fields
}
func (*NotificationQueue) AddNotification ¶
func (q *NotificationQueue) AddNotification(item NotificationItem)
type NotificationState ¶
type NotificationState struct {
// contains filtered or unexported fields
}
type ShardManager ¶ added in v1.0.1
type ShardManager struct {
sync.Mutex
Sessions []*discordgo.Session
MaxConcurrency int
TotalShards int
StartedShards int
}
ShardManager handles the creation and management of Discord gateway shards
func NewShardManager ¶ added in v1.0.1
func NewShardManager() (*ShardManager, error)
NewShardManager creates a new shard manager
func (*ShardManager) Close ¶ added in v1.0.1
func (sm *ShardManager) Close()
Close closes all shard connections
func (*ShardManager) GetSession ¶ added in v1.0.1
func (sm *ShardManager) GetSession(guildID string) *discordgo.Session
GetSession returns the session for a specific guild
func (*ShardManager) StartShards ¶ added in v1.0.1
func (sm *ShardManager) StartShards(token string, handlers map[string]func(*discordgo.Session, *discordgo.InteractionCreate)) error
StartShards initializes and connects all shards
type TwoCaptchaSolver ¶
func (*TwoCaptchaSolver) SolveReCaptchaV2 ¶
func (s *TwoCaptchaSolver) SolveReCaptchaV2(siteKey, pageURL string) (string, error)
Click to show internal directories.
Click to hide internal directories.