Files
mygoTgChanBot/README.md

3.3 KiB
Raw Blame History

Telegram 频道目录机器人

交互式、数据库驱动的 Telegram 频道内容管理系统。

功能

  • 数据库管理分类 - 动态 CRUD无需硬编码
  • 交互式按钮投稿 - Inline Keyboard 选择分类
  • 快捷回复投稿 - 回复消息直接添加到目录
  • 内容同步发布 - 转发的内容会复制发送到频道(非转发,可编辑)
  • 防抖目录更新 - 多次操作合并为一次渲染,避免限流

安装

go mod tidy
go build -o bot ./cmd/bot

配置

编辑 config.yaml:

bot:
  token: "YOUR_BOT_TOKEN"

admins:
  - 123456789  # 管理员 Telegram User ID

channel:
  id: -1001234567890  # 目标频道 ID

database:
  path: "./data/bot.db"

toc:
  debounce_seconds: 3

运行

./bot
# 或指定配置文件
./bot -config /path/to/config.yaml

命令

命令 说明
/post 开始投稿流程
/post <分类> /tt <标题> 快捷投稿 (回复消息时使用)
/list [分类] 查看条目
/del <ID> 删除条目
/edit <ID> <新标题> 修改标题
/move <ID> <新分类> 移动条目到其他分类
/cat_add <名称> [排序] 创建分类
/cat_del <名称> 删除分类
/cat_list 列出所有分类
/refresh 手动刷新频道目录

投稿方式

方式一:交互式流程(私聊 Bot

1. 私聊 Bot 发送 /post
2. 转发任意消息给 Bot支持来自任意来源个人、群组、频道等
3. 点击分类按钮
4. 确认标题 (使用默认 / 自定义输入)
5. 确认添加

Bot 会将消息内容复制发送到频道,目录链接指向频道中的新消息。

方式二:快捷回复(群组内)

1. 在关联群组找到目标消息
2. 回复该消息,发送:
   /post iOS /tt 某个APP推荐
  • /tt 后的内容为自定义标题
  • 省略标题则自动提取消息首行

支持的消息类型

  • 纯文本
  • 图片(带说明文字)
  • 视频(带说明文字)
  • 文档(带说明文字)
  • 音频(带说明文字)
  • 动图(带说明文字)
  • 语音
  • 贴纸

目录结构

├── cmd/bot/main.go           # 程序入口
├── config.yaml               # 配置文件
├── internal/
│   ├── config/config.go      # 配置加载
│   ├── storage/
│   │   ├── storage.go        # BoltDB 初始化
│   │   ├── category.go       # 分类 CRUD
│   │   └── entry.go          # 条目 CRUD
│   ├── telegram/
│   │   ├── bot.go            # Bot 初始化与路由
│   │   ├── middleware.go     # 权限中间件
│   │   ├── state.go          # 用户状态管理
│   │   ├── handlers_cat.go   # 分类命令
│   │   ├── handlers_post.go  # 投稿流程
│   │   └── handlers_entry.go # 条目命令
│   └── toc/
│       ├── manager.go        # 目录管理器 (防抖)
│       └── renderer.go       # 目录渲染

技术栈

License

MIT