Files
mygoTgChanBot/README.md
2026-02-05 21:29:48 +08:00

155 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Telegram 频道目录机器人
![Cover](assets/mygo.png)
交互式、数据库驱动的 Telegram 频道内容管理系统。
## 功能
- **数据库管理分类** - 动态 CRUD无需硬编码
- **交互式按钮投稿** - Inline Keyboard 选择分类
- **快捷回复投稿** - 回复消息直接添加到目录
- **内容同步发布** - 转发的内容会复制发送到频道(非转发,可编辑)
- **相册/多文件支持** - 自动收集相册消息,一次性发送到频道
- **目录封面图** - 可配置封面图片美化目录展示
- **交互式删除** - 删除条目时可选择是否同步删除频道消息
- **防抖目录更新** - 多次操作合并为一次渲染,避免限流
## 安装
```bash
go mod tidy
go build -o bot ./cmd/bot
```
## 配置
编辑 `config.yaml`:
```yaml
bot:
token: "YOUR_BOT_TOKEN"
admins:
- 123456789 # 管理员 Telegram User ID
channel:
id: -1001234567890 # 目标频道 ID
database:
path: "./data/bot.db"
toc:
debounce_seconds: 3
cover_image: "./assets/cover.jpg" # 可选,目录封面图片
```
## 运行
```bash
./bot
# 或指定配置文件
./bot -config /path/to/config.yaml
```
## 命令
### 投稿管理
| 命令 | 说明 |
|------|------|
| `/post` | 开始投稿流程 |
| `/post <分类> /tt <标题>` | 快捷投稿 (回复消息时使用) |
| `/list [分类]` | 查看条目 |
| `/del <ID>` | 删除条目(可选是否删除频道消息) |
| `/edit <ID> <新标题>` | 修改标题 |
| `/move <ID> <新分类>` | 移动条目到其他分类 |
| `/refresh` | 手动刷新频道目录 |
### 分类管理
| 命令 | 说明 |
|------|------|
| `/cat_add <名称> [排序]` | 创建分类 |
| `/cat_del <名称>` | 删除分类 |
| `/cat_rename <旧名称> <新名称>` | 重命名分类(自动更新所有条目) |
| `/cat_list` | 列出所有分类 |
### 管理员管理 (仅超级管理员)
| 命令 | 说明 |
|------|------|
| `/admin_add <用户ID>` | 添加管理员 |
| `/admin_del <用户ID>` | 移除管理员 |
| `/admin_list` | 列出所有管理员 |
## 投稿方式
### 方式一:私聊转发(推荐)
```
1. 私聊 Bot直接转发任意消息支持来自个人、群组、频道等
2. 点击分类按钮
3. 确认标题 (使用默认 / 自定义输入)
4. 确认添加
```
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 # 目录渲染
```
## 技术栈
- Go 1.23+
- [telebot.v3](https://gopkg.in/telebot.v3) - Telegram Bot 框架
- [bbolt](https://go.etcd.io/bbolt) - 嵌入式 KV 数据库
- [shortid](https://github.com/teris-io/shortid) - 短 ID 生成
## License
MIT