diff --git a/client/bot/handlers/register.go b/client/bot/handlers/register.go index fb6ba60..8e304e4 100644 --- a/client/bot/handlers/register.go +++ b/client/bot/handlers/register.go @@ -28,6 +28,7 @@ var CommandHandlers = []DescCommandHandler{ {"rule", "管理自动存储规则", handleRuleCmd}, {"watch", "监听聊天(UserBot)", handleWatchCmd}, {"unwatch", "取消监听聊天(UserBot)", handleUnwatchCmd}, + {"lswatch", "列出监听的聊天(UserBot)", handleLswatchCmd}, {"save", "保存文件", handleSilentMode(handleSaveCmd, handleSilentSaveReplied)}, {"config", "修改配置", handleConfigCmd}, {"fnametmpl", "设置文件命名模板", handleConfigFnameTmpl}, diff --git a/client/bot/handlers/watch.go b/client/bot/handlers/watch.go index 7676ec5..a00d2ca 100644 --- a/client/bot/handlers/watch.go +++ b/client/bot/handlers/watch.go @@ -1,6 +1,7 @@ package handlers import ( + "fmt" "path" "regexp" "strings" @@ -91,6 +92,36 @@ func handleWatchCmd(ctx *ext.Context, update *ext.Update) error { return dispatcher.EndGroups } +func handleLswatchCmd(ctx *ext.Context, update *ext.Update) error { + logger := log.FromContext(ctx) + userChatID := update.GetUserChat().GetID() + user, err := database.GetUserByChatID(ctx, userChatID) + if err != nil { + logger.Errorf("获取用户失败: %s", err) + ctx.Reply(update, ext.ReplyTextString("获取用户失败"), nil) + return dispatcher.EndGroups + } + chats := user.WatchChats + if len(chats) == 0 { + ctx.Reply(update, ext.ReplyTextString("当前没有监听任何聊天"), nil) + return dispatcher.EndGroups + } + var sb strings.Builder + sb.WriteString("当前监听的聊天:\n") + for _, chat := range chats { + sb.WriteString("- ") + sb.WriteString(fmt.Sprintf("%d", chat.ChatID)) + if chat.Filter != "" { + sb.WriteString(" (过滤器: ") + sb.WriteString(chat.Filter) + sb.WriteString(")") + } + sb.WriteString("\n") + } + ctx.Reply(update, ext.ReplyTextString(sb.String()), nil) + return dispatcher.EndGroups +} + func handleUnwatchCmd(ctx *ext.Context, update *ext.Update) error { logger := log.FromContext(ctx) args := strings.Split(update.EffectiveMessage.Text, " ")