package telegram import ( "fmt" "strconv" "strings" tele "gopkg.in/telebot.v3" ) func (b *Bot) handleAdminAdd(c tele.Context) error { payload := strings.TrimSpace(c.Message().Payload) if payload == "" { return c.Reply("用法: /admin_add <用户ID>") } userID, err := strconv.ParseInt(payload, 10, 64) if err != nil { return c.Reply("❌ 无效的用户ID") } // 检查是否已是管理员 if b.isAdmin(userID) { return c.Reply("⚠️ 该用户已是管理员") } if err := b.storage.AddAdmin(userID); err != nil { return c.Reply(fmt.Sprintf("❌ 添加失败: %v", err)) } return c.Reply(fmt.Sprintf("✅ 已添加管理员: %d", userID)) } func (b *Bot) handleAdminDel(c tele.Context) error { payload := strings.TrimSpace(c.Message().Payload) if payload == "" { return c.Reply("用法: /admin_del <用户ID>") } userID, err := strconv.ParseInt(payload, 10, 64) if err != nil { return c.Reply("❌ 无效的用户ID") } // 不能删除超级管理员 if b.cfg.IsSuperAdmin(userID) { return c.Reply("❌ 无法删除超级管理员(配置文件中的管理员)") } if err := b.storage.RemoveAdmin(userID); err != nil { return c.Reply(fmt.Sprintf("❌ 删除失败: %v", err)) } return c.Reply(fmt.Sprintf("✅ 已移除管理员: %d", userID)) } func (b *Bot) handleAdminList(c tele.Context) error { // 配置文件中的超级管理员 superAdmins := b.cfg.Admins // 数据库中的动态管理员 dbAdmins, err := b.storage.ListAdmins() if err != nil { return c.Reply(fmt.Sprintf("❌ 获取管理员列表失败: %v", err)) } var sb strings.Builder sb.WriteString("👑 **管理员列表**\n\n") sb.WriteString("**超级管理员(配置文件):**\n") if len(superAdmins) == 0 { sb.WriteString(" _无_\n") } else { for _, id := range superAdmins { sb.WriteString(fmt.Sprintf(" • `%d`\n", id)) } } sb.WriteString("\n**动态管理员(数据库):**\n") if len(dbAdmins) == 0 { sb.WriteString(" _无_\n") } else { for _, id := range dbAdmins { sb.WriteString(fmt.Sprintf(" • `%d`\n", id)) } } return c.Reply(sb.String(), tele.ModeMarkdown) }