Files
command-server/config/config.go
zhilv e8c641414e feat(core): 初始化 Bot 命令处理服务器
- 基于 Gin 框架搭建 HTTP 服务,接收并处理 Bot 命令请求
- 实现插件化命令系统,支持通过 Plugin 接口扩展新命令
- 内置菜单、启用/禁用、时间查询等基础命令
- 新增图片生成插件,对接 OpenAI Images API
- 支持管理员权限控制、命令动态启禁用
- 提供完整配置管理(.env)与 Docker 部署方案
2026-05-05 13:41:44 +08:00

88 lines
1.7 KiB
Go

package config
import (
"log"
"os"
"strconv"
"github.com/joho/godotenv"
)
var Cfg Config
// API 路径常量
const (
ImageGenerationsPath = "/v1/images/generations"
)
type Config struct {
// Server
ServerAddr string
// OpenAI Image
OpenAIBaseURL string // API 基础地址,如 https://api.openai.com
OpenAIAPIKey string
OpenAIModel string
RequestTimeout int
ImageCount int
ImageOutputDir string
// Upload
UploadURL string
UploadAPIKey string
// Proxy
Proxy string
// Admin
AdminUsers string
}
func Load(envPath string) error {
if _, err := os.Stat(envPath); err == nil {
if err := godotenv.Load(envPath); err != nil {
return err
}
}
Cfg = Config{
ServerAddr: getEnv("SERVER_ADDR", "127.0.0.1:8000"),
OpenAIBaseURL: getEnv("OPENAI_BASE_URL", "https://api.openai.com"),
OpenAIAPIKey: os.Getenv("OPENAI_API_KEY"),
OpenAIModel: getEnv("OPENAI_MODEL", "gpt-image-2"),
RequestTimeout: getEnvInt("REQUEST_TIMEOUT", 120),
ImageCount: getEnvInt("IMAGE_COUNT", 1),
ImageOutputDir: getEnv("IMAGE_OUTPUT_DIR", "images"),
UploadURL: os.Getenv("UPLOAD_URL"),
UploadAPIKey: os.Getenv("UPLOAD_API_KEY"),
Proxy: os.Getenv("PROXY"),
AdminUsers: os.Getenv("ADMIN_USERS"),
}
if Cfg.OpenAIAPIKey == "" {
log.Println("warn: OPENAI_API_KEY is empty")
}
return nil
}
func getEnv(key, def string) string {
if v := os.Getenv(key); v != "" {
return v
}
return def
}
func getEnvInt(key string, def int) int {
v := os.Getenv(key)
if v == "" {
return def
}
n, err := strconv.Atoi(v)
if err != nil {
log.Printf("warn: invalid int for %s=%q, using default %d", key, v, def)
return def
}
return n
}