topfans/backend/services/activityService/config/config.go

62 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package config
import (
"os"
"strconv"
"strings"
)
// 默认敏感词列表(首版本地词表,后续接 dify
var defaultBannedWords = []string{
"傻逼", "操你", "草泥马", "fuck", "shit",
}
// ActivityMessageConfig 活动留言配置
type ActivityMessageConfig struct {
MessageRateLimitPerMin int64 // 单用户单活动每分钟最多留言数
MessageLimitPerActivity int64 // 单用户单活动累计留言上限
BannedWords []string // 敏感词首版本地词表(可通过 env 覆盖)
}
// LoadMessageConfig 从环境变量加载配置(缺省值参考通知服务)
func LoadMessageConfig() *ActivityMessageConfig {
return &ActivityMessageConfig{
MessageRateLimitPerMin: getEnvInt64("ACTIVITY_MESSAGE_RATE_LIMIT_PER_MIN", 5),
MessageLimitPerActivity: getEnvInt64("ACTIVITY_MESSAGE_LIMIT_PER_ACTIVITY", 100),
BannedWords: loadBannedWords(),
}
}
// loadBannedWords 从 ACTIVITY_MESSAGE_BANNED_WORDS逗号分隔加载敏感词
// 未设置或为空时回退到默认词表
func loadBannedWords() []string {
raw := os.Getenv("ACTIVITY_MESSAGE_BANNED_WORDS")
if strings.TrimSpace(raw) == "" {
return append([]string{}, defaultBannedWords...)
}
parts := strings.Split(raw, ",")
out := make([]string, 0, len(parts))
for _, p := range parts {
t := strings.TrimSpace(p)
if t != "" {
out = append(out, t)
}
}
if len(out) == 0 {
return append([]string{}, defaultBannedWords...)
}
return out
}
func getEnvInt64(key string, defaultVal int64) int64 {
v := os.Getenv(key)
if v == "" {
return defaultVal
}
parsed, err := strconv.ParseInt(v, 10, 64)
if err != nil {
return defaultVal
}
return parsed
}