Documentation
¶
Index ¶
- Variables
- func GetPlatformsByCategory() map[string][]PlatformAuthConfig
- func IsValidPlatform(platform string) bool
- func RunTelegramBot(ctx context.Context, store *Store, sessionMgr *session.Manager) error
- type FieldSpec
- type Manager
- type PlatformAuthConfig
- type Settings
- type Store
- func (s *Store) Close() error
- func (s *Store) CreateSettings(settings Settings) (Settings, error)
- func (s *Store) DeleteSettings(uuid string) error
- func (s *Store) GetBashCwd(chatID string) (string, bool, error)
- func (s *Store) GetSessionForChat(chatID string) (string, bool, error)
- func (s *Store) GetSettings() (Settings, error)
- func (s *Store) GetSettingsByUUID(uuid string) (Settings, error)
- func (s *Store) ListEnabledSettings() ([]Settings, error)
- func (s *Store) ListSettings() ([]Settings, error)
- func (s *Store) SaveSettings(settings Settings) error
- func (s *Store) SetBashCwd(chatID, cwd string) error
- func (s *Store) SetSessionForChat(chatID, sessionID string) error
- func (s *Store) ToggleSettings(uuid string) (bool, error)
- func (s *Store) UpdateSettings(uuid string, settings Settings) error
Constants ¶
This section is empty.
Variables ¶
var AuthTypeLabels = map[string]string{
"token": "Token",
"oauth": "OAuth",
"qr": "QR Code",
"basic": "Basic Auth",
}
AuthTypeLabels provides display labels for auth types
var CategoryLabels = map[string]string{
"im": "IM Platforms",
"enterprise": "Enterprise",
"business": "Business",
}
CategoryLabels provides display labels for categories
var PlatformConfigs = map[string]PlatformAuthConfig{ "telegram": { Platform: "telegram", AuthType: "token", DisplayName: "Telegram", Category: "im", Fields: []FieldSpec{ { Key: "token", Label: "Bot Token", Placeholder: "123456789:ABCdefGHIjklMNOpqrsTUVwxyz", Required: true, Secret: true, HelperText: "Get from @BotFather on Telegram", }, }, }, "slack": { Platform: "slack", AuthType: "token", DisplayName: "Slack", Category: "im", Fields: []FieldSpec{ { Key: "token", Label: "Bot Token", Placeholder: "xoxb-your-token-here", Required: true, Secret: true, HelperText: "Must start with 'xoxb-'. Get from Slack API", }, }, }, "discord": { Platform: "discord", AuthType: "token", DisplayName: "Discord", Category: "im", Fields: []FieldSpec{ { Key: "token", Label: "Bot Token", Placeholder: "MTIzNDU2Nzg5OABCDEF123456789", Required: true, Secret: true, HelperText: "Must start with 'Bot ' prefix. Get from Discord Developer Portal", }, }, }, "dingtalk": { Platform: "dingtalk", AuthType: "oauth", DisplayName: "DingTalk", Category: "enterprise", Fields: []FieldSpec{ { Key: "clientId", Label: "App Key", Placeholder: "ding-your-app-key", Required: true, Secret: true, HelperText: "Also known as AppKey or ClientId", }, { Key: "clientSecret", Label: "App Secret", Placeholder: "Your app secret", Required: true, Secret: true, HelperText: "Also known as AppSecret or ClientSecret", }, }, }, "feishu": { Platform: "feishu", AuthType: "oauth", DisplayName: "Feishu / Lark", Category: "enterprise", Fields: []FieldSpec{ { Key: "clientId", Label: "App ID", Placeholder: "cli-your-app-id", Required: true, Secret: true, HelperText: "Also known as AppID or ClientId", }, { Key: "clientSecret", Label: "App Secret", Placeholder: "Your app secret", Required: true, Secret: true, HelperText: "Also known as AppSecret or ClientSecret", }, }, }, "whatsapp": { Platform: "whatsapp", AuthType: "token", DisplayName: "WhatsApp", Category: "business", Fields: []FieldSpec{ { Key: "token", Label: "Access Token", Placeholder: "Your WhatsApp access token", Required: true, Secret: true, HelperText: "Get from Meta for Developers", }, { Key: "phoneNumberId", Label: "Phone Number ID", Placeholder: "Your phone number ID", Required: false, Secret: false, HelperText: "Optional: The phone number ID for sending messages", }, }, }, }
PlatformConfigs maps platform identifiers to their auth configurations
Functions ¶
func GetPlatformsByCategory ¶
func GetPlatformsByCategory() map[string][]PlatformAuthConfig
GetPlatformsByCategory returns platforms grouped by category
func IsValidPlatform ¶
IsValidPlatform checks if a platform identifier is valid
Types ¶
type FieldSpec ¶
type FieldSpec struct {
Key string `json:"key"` // Field key in auth map
Label string `json:"label"` // Display label for the field
Placeholder string `json:"placeholder"` // Placeholder text
Required bool `json:"required"` // Whether this field is required
Secret bool `json:"secret"` // Whether this field should be masked (password/token)
HelperText string `json:"helperText"` // Additional guidance for users
}
FieldSpec defines a single auth field
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages the lifecycle of running bot instances
func NewManager ¶
NewManager creates a new bot manager
func (*Manager) StartEnabled ¶
StartEnabled starts all enabled bots
type PlatformAuthConfig ¶
type PlatformAuthConfig struct {
Platform string `json:"platform"` // Platform identifier
AuthType string `json:"auth_type"` // "token", "oauth", "qr", "basic"
DisplayName string `json:"display_name"` // Human-readable platform name
Category string `json:"category"` // "im", "enterprise", "business"
Fields []FieldSpec `json:"fields"` // Required/optional auth fields
}
PlatformAuthConfig defines the authentication requirements for each platform
func GetAllPlatforms ¶
func GetAllPlatforms() []PlatformAuthConfig
GetAllPlatforms returns all platform configurations as a slice
func GetPlatformConfig ¶
func GetPlatformConfig(platform string) (PlatformAuthConfig, bool)
GetPlatformConfig returns the auth config for a given platform
type Settings ¶
type Settings struct {
UUID string `json:"uuid,omitempty"`
Name string `json:"name,omitempty"` // User-defined name for the bot
Token string `json:"token,omitempty"` // Legacy: for backward compatibility
Platform string `json:"platform"` // Platform identifier
AuthType string `json:"auth_type"` // Auth type: token, oauth, qr
Auth map[string]string `json:"auth"` // Dynamic auth fields based on platform
ProxyURL string `json:"proxy_url,omitempty"` // Optional proxy URL
ChatIDLock string `json:"chat_id,omitempty"` // Optional chat ID lock
BashAllowlist []string `json:"bash_allowlist,omitempty"` // Optional bash command allowlist
Enabled bool `json:"enabled"` // Whether this bot is enabled
CreatedAt string `json:"created_at,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
}
Settings represents bot configuration with platform-specific auth
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
func (*Store) CreateSettings ¶
CreateSettings creates a new bot configuration
func (*Store) DeleteSettings ¶
DeleteSettings deletes a bot configuration
func (*Store) GetSessionForChat ¶
func (*Store) GetSettings ¶
func (*Store) GetSettingsByUUID ¶
GetSettingsByUUID returns a single bot configuration by UUID
func (*Store) ListEnabledSettings ¶
ListEnabledSettings returns all enabled bot configurations
func (*Store) ListSettings ¶
ListSettings returns all bot configurations from v2 table
func (*Store) SaveSettings ¶
func (*Store) SetBashCwd ¶
func (*Store) SetSessionForChat ¶
func (*Store) ToggleSettings ¶
ToggleSettings toggles the enabled status of a bot configuration