mirror of
https://github.com/HugeFrog24/go-telegram-bot.git
synced 2026-08-28 22:11:38 +00:00
91 lines
2.4 KiB
Go
91 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type BotModel struct {
|
|
gorm.Model
|
|
Identifier string `gorm:"uniqueIndex"`
|
|
Name string
|
|
Configs []ConfigModel `gorm:"foreignKey:BotID;constraint:OnDelete:CASCADE"`
|
|
Users []User `gorm:"foreignKey:BotID;constraint:OnDelete:CASCADE"`
|
|
Messages []Message `gorm:"foreignKey:BotID;constraint:OnDelete:CASCADE"`
|
|
}
|
|
|
|
type ConfigModel struct {
|
|
gorm.Model
|
|
BotID uint `gorm:"index"`
|
|
MemorySize int `json:"memory_size"`
|
|
MessagePerHour int `json:"messages_per_hour"`
|
|
MessagePerDay int `json:"messages_per_day"`
|
|
TempBanDuration string `json:"temp_ban_duration"`
|
|
SystemPrompts string `json:"system_prompts"`
|
|
TelegramToken string `json:"telegram_token"`
|
|
Active bool `json:"active"`
|
|
}
|
|
|
|
type Message struct {
|
|
gorm.Model
|
|
BotID uint `gorm:"index"`
|
|
ChatID int64 `gorm:"index"`
|
|
UserID int64 `gorm:"index"`
|
|
Username string `gorm:"index"`
|
|
UserRole string
|
|
Text string `gorm:"type:text"`
|
|
Timestamp time.Time `gorm:"index"`
|
|
IsUser bool
|
|
StickerFileID string
|
|
StickerPNGFile string
|
|
StickerEmoji string
|
|
DeletedAt gorm.DeletedAt `gorm:"index"`
|
|
AnsweredOn *time.Time `gorm:"index"`
|
|
ImageFileIDs []string `gorm:"type:text;serializer:json"`
|
|
FilesCleanedAt *time.Time `gorm:"index"`
|
|
}
|
|
|
|
type ChatMemory struct {
|
|
Messages []Message
|
|
Size int
|
|
BusinessConnectionID string
|
|
}
|
|
|
|
const (
|
|
ScopeStatsViewOwn = "stats:view:own"
|
|
ScopeStatsViewAny = "stats:view:any"
|
|
ScopeHistoryClearOwn = "history:clear:own"
|
|
ScopeHistoryClearAny = "history:clear:any"
|
|
ScopeHistoryClearHardOwn = "history:clear_hard:own"
|
|
ScopeHistoryClearHardAny = "history:clear_hard:any"
|
|
ScopeModelSet = "model:set"
|
|
ScopeUserPromote = "user:promote"
|
|
ScopeTTSUse = "tts:use"
|
|
)
|
|
|
|
type Scope struct {
|
|
gorm.Model
|
|
Name string `gorm:"uniqueIndex"`
|
|
}
|
|
|
|
type Role struct {
|
|
gorm.Model
|
|
Name string `gorm:"uniqueIndex"`
|
|
Scopes []Scope `gorm:"many2many:role_scopes;"`
|
|
}
|
|
|
|
type User struct {
|
|
gorm.Model
|
|
BotID uint `gorm:"uniqueIndex:idx_user_bot;index"`
|
|
TelegramID int64 `gorm:"uniqueIndex:idx_user_bot;not null"`
|
|
Username string
|
|
RoleID uint
|
|
Role Role `gorm:"foreignKey:RoleID"`
|
|
IsOwner bool `gorm:"default:false"`
|
|
}
|
|
|
|
func (User) TableName() string {
|
|
return "users"
|
|
}
|