From 4ccbf8177e71747d615b24a74bf7f9bd38566ce9 Mon Sep 17 00:00:00 2001 From: krau <71133316+krau@users.noreply.github.com> Date: Fri, 19 Dec 2025 20:29:48 +0800 Subject: [PATCH] fix(i18n): Update log messages to English and improve error handling in bot initialization and storage loading --- client/bot/bot.go | 8 ++++---- client/bot/handlers/rule.go | 7 +++---- common/i18n/locale/zh-Hans.yaml | 20 ++++++++++---------- storage/load.go | 6 +++--- storage/storage.go | 4 ++-- 5 files changed, 22 insertions(+), 23 deletions(-) diff --git a/client/bot/bot.go b/client/bot/bot.go index 2c1bc04..cbc2a62 100644 --- a/client/bot/bot.go +++ b/client/bot/bot.go @@ -24,7 +24,7 @@ func ExtContext() *ext.Context { } func Init(ctx context.Context) <-chan struct{} { - log.FromContext(ctx).Info("初始化 Bot...") + log.FromContext(ctx).Info("Initializing Bot...") resultChan := make(chan struct { client *gotgproto.Client err error @@ -88,14 +88,14 @@ func Init(ctx context.Context) <-chan struct{} { select { case <-ctx.Done(): - log.FromContext(ctx).Errorf("已取消 Bot 初始化: %s", ctx.Err()) + log.FromContext(ctx).Errorf("Bot initialization cancelled: %s", ctx.Err()) case result := <-resultChan: if result.err != nil { - log.FromContext(ctx).Fatalf("初始化 Bot 失败: %s", result.err) + log.FromContext(ctx).Fatalf("Failed to initialize Bot: %s", result.err) } handlers.Register(result.client.Dispatcher) ectx = result.client.CreateContext() - log.FromContext(ctx).Info("Bot 初始化完成") + log.FromContext(ctx).Info("Bot initialization completed.") } return shouldRestart } diff --git a/client/bot/handlers/rule.go b/client/bot/handlers/rule.go index d6e03fd..bf3f10a 100644 --- a/client/bot/handlers/rule.go +++ b/client/bot/handlers/rule.go @@ -36,7 +36,6 @@ func handleRuleCmd(ctx *ext.Context, update *ext.Update) error { // /rule switch applyRule := !user.ApplyRule if err := database.UpdateUserApplyRule(ctx, user.ChatID, applyRule); err != nil { - logger.Errorf("更新用户失败: %s", err) ctx.Reply(update, ext.ReplyTextString(i18n.T(i18nk.BotMsgRuleErrorUpdateUserFailed, nil)), nil) return dispatcher.EndGroups } @@ -58,7 +57,7 @@ func handleRuleCmd(ctx *ext.Context, update *ext.Update) error { return t, nil } } - return rule.RuleType(""), fmt.Errorf("无效的规则类型: %s\n可用: %v", ruleTypeArg, slice.Join(rule.Values(), ", ")) + return rule.RuleType(""), fmt.Errorf("invalid rule type: %s\navailable: %v", ruleTypeArg, slice.Join(rule.Values(), ", ")) }() if err != nil { ctx.Reply(update, ext.ReplyTextString(i18n.T(i18nk.BotMsgRuleErrorInvalidRuleType, map[string]any{ @@ -80,7 +79,7 @@ func handleRuleCmd(ctx *ext.Context, update *ext.Update) error { UserID: user.ID, } if err := database.CreateRule(ctx, rd); err != nil { - logger.Errorf("创建规则失败: %s", err) + logger.Errorf("failed to create rule: %s", err) ctx.Reply(update, ext.ReplyTextString(i18n.T(i18nk.BotMsgRuleErrorCreateRuleFailed, nil)), nil) return dispatcher.EndGroups } @@ -98,7 +97,7 @@ func handleRuleCmd(ctx *ext.Context, update *ext.Update) error { return dispatcher.EndGroups } if err := database.DeleteRule(ctx, uint(id)); err != nil { - logger.Errorf("删除规则失败: %s", err) + logger.Errorf("failed to delete rule %d: %s", id, err) ctx.Reply(update, ext.ReplyTextString(i18n.T(i18nk.BotMsgRuleErrorDeleteRuleFailed, nil)), nil) return dispatcher.EndGroups } diff --git a/common/i18n/locale/zh-Hans.yaml b/common/i18n/locale/zh-Hans.yaml index b61e889..f011a17 100644 --- a/common/i18n/locale/zh-Hans.yaml +++ b/common/i18n/locale/zh-Hans.yaml @@ -231,7 +231,7 @@ bot: 文件大小: {{.SizeMB}} MB 下载链接: {{.URL}} 发布时间: {{.PublishedAt}} - + 升级将重启 Bot , 是否升级? info_upgrading_with_version: "正在升级中, 当前版本: {{.Current}}" error_upgrade_failed: "升级失败: {{.Error}}" @@ -245,18 +245,18 @@ bot: prompt_select_filename_strategy: "请选择文件名策略, 当前策略: {{.Strategy}}" fnametmpl_help: |- 使用该命令设置文件名模板, 示例: - /fnametmpl 图片_{{.msgid}}_{{.msgdate}}.jpg + /fnametmpl 图片_{{"{{.msgid}}"}}_{{"{{.msgdate}}"}}.jpg 可用变量: - - {{.msgid}}: 消息ID - - {{.msgtags}}: 消息中的标签, 将以下划线分隔输出 - - {{.msggen}}: 根据消息生成的文件名 - - {{.msgdate}}: 消息日期, 格式 YYYY-MM-DD_HH-MM-SS - - {{.origname}}: 媒体的原始文件名 (如果有) - - {{.chatid}}: 消息的聊天ID + - {{"{{.msgid}}"}}: 消息ID + - {{"{{.msgtags}}"}}: 消息中的标签, 将以下划线分隔输出 + - {{"{{.msggen}}"}}: 根据消息生成的文件名 + - {{"{{.msgdate}}"}}: 消息日期, 格式 YYYY-MM-DD_HH-MM-SS + - {{"{{.origname}}"}}: 媒体的原始文件名 (如果有) + - {{"{{.chatid}}"}}: 消息的聊天ID - 模板仅在文件名策略设置为 '自定义模板' 时生效, 且模板解析错误时会回退到默认文件名 - error_invalid_template: "无效的模板, 请检查语法\n{{.Error}}" + 模板仅在文件名策略设置为 '自定义模板' 时生效, + 且模板解析错误时会回退到默认文件名 info_template_updated: "已更新文件名模板" info_current_template_prefix: "当前模板: {{.Template}}" dl: diff --git a/storage/load.go b/storage/load.go index f99dfd6..3a926e6 100644 --- a/storage/load.go +++ b/storage/load.go @@ -67,14 +67,14 @@ func GetUserStorages(ctx context.Context, chatID int64) []Storage { func LoadStorages(ctx context.Context) { logger := log.FromContext(ctx) - logger.Info("加载存储...") + logger.Debug("loading storages...") for _, storage := range config.C().Storages { _, err := GetStorageByName(ctx, storage.GetName()) if err != nil { - logger.Errorf("加载存储 %s 失败: %v", storage.GetName(), err) + logger.Errorf("failed to load storage %s: %v", storage.GetName(), err) } } - logger.Infof("成功加载 %d 个存储", len(Storages)) + logger.Infof("successfully loaded %d storages", len(Storages)) for user := range config.C().GetUsersID() { UserStorages[int64(user)] = GetUserStorages(ctx, int64(user)) } diff --git a/storage/storage.go b/storage/storage.go index 68d23a6..0928d53 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -47,12 +47,12 @@ var storageConstructors = map[storenum.StorageType]StorageConstructor{ func NewStorage(ctx context.Context, cfg storcfg.StorageConfig) (Storage, error) { constructor, ok := storageConstructors[cfg.GetType()] if !ok { - return nil, fmt.Errorf("不支持的存储类型: %s", cfg.GetType()) + return nil, fmt.Errorf("unsupported storage type: %s", cfg.GetType()) } storage := constructor() if err := storage.Init(ctx, cfg); err != nil { - return nil, fmt.Errorf("初始化 %s 存储失败: %w", cfg.GetName(), err) + return nil, fmt.Errorf("failed to initialize storage %s: %w", cfg.GetName(), err) } return storage, nil