mirror of
https://github.com/woodchen-ink/Q58Bot.git
synced 2025-07-18 13:52:07 +08:00
121 lines
3.9 KiB
Markdown
121 lines
3.9 KiB
Markdown
# Q58-Telegram-Bot
|
||
|
||
## 示例
|
||
|
||

|
||

|
||

|
||
|
||
|
||
## 项目功能
|
||
|
||
|
||
### TeleGuard
|
||
- 自动删除包含指定关键词的消息
|
||
- 支持通过命令添加、删除和列出关键词
|
||
- 只有管理员可以管理关键词列表
|
||
|
||
### 币安价格更新器
|
||
- 定期获取指定加密货币的价格信息
|
||
- 发送详细的价格更新,包括当前价格、24小时变化、高低点等
|
||
- 可自定义货币对, 更新频率可自行在代码里修改
|
||
|
||
### 虚拟币价格实时获取
|
||
- 从币安获取所有交易对, 缓存到内存里, 每小时刷新一次
|
||
- 当群消息为虚拟币名称时, 会返回对应虚拟币/USDT的价格
|
||
- 例如,如果用户发送 "BTC"、"btc" 或 "Btc",都会触发比特币的价格信息发送,但发送 "What's the price of BTC?" 则不会触发。
|
||
|
||
### 链接拦截
|
||
- 新增: 当非管理员时, 才会进行链接拦截
|
||
- 非白名单域名链接, 在发送第二次会被拦截撤回
|
||
|
||
### 白名单域名
|
||
- 当用户发送链接, 属于白名单域名, 则不进行操作. 如果不属于白名单域名, 则会第一次允许发送, 第二次进行撤回操作.
|
||
- 会匹配链接中的域名, 包括二级域名和三级域名
|
||
- 例如,如果白名单中有 "example.com",它将匹配 "example.com"、"sub.example.com" 和 "sub.sub.example.com"。
|
||
- 同时,如果白名单中有 "sub.example.com",它将匹配 "sub.example.com" 和 "subsub.sub.example.com",但不会匹配 "example.com" 或 "othersub.example.com"。
|
||
|
||
### 提示词自动回复
|
||
- 当用户发送包含特定关键词的消息时,机器人将自动回复提示词。
|
||
- 管理员通过`/prompt`进行设置, 支持添加, 删除, 列出.
|
||
|
||
### 群组快捷管理
|
||
- 管理员可以对成员消息回复`/ban`, 会进行以下处理:
|
||
1. 将成员消息撤回, 无限期封禁成员, 并发送封禁通知
|
||
2. 在3分钟后, 撤回管理员指令消息和机器人的封禁通知
|
||
|
||
|
||
## 安装与配置
|
||
|
||
1. 确保服务器已安装 Docker 和 Docker Compose
|
||
2. 使用 `docker-compose.yml` 文件构建和启动容器
|
||
|
||
## 使用方法
|
||
|
||
构建并启动 Docker 容器:
|
||
```
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
- 确保 Telegram 机器人已被添加到目标群组,并被赋予管理员权限
|
||
- 定期检查日志以确保服务正常运行
|
||
|
||
## 项目结构
|
||
```
|
||
Q58Bot/
|
||
│
|
||
├── core/
|
||
│ ├── bot_commands.go # 注册机器人命令
|
||
│ ├── database.go # 数据库操作
|
||
│ ├── init.go # 初始化全局变量
|
||
│ └── ratelimiter.go # 限速器
|
||
│
|
||
├── service/
|
||
│ ├── binance/
|
||
│ │ └── binance.go # 获取币安价格信息
|
||
│ │
|
||
| |── group_member_management/
|
||
| | └── group_member_management.go # 对群组进行管理
|
||
│ │
|
||
│ ├── link_filter/
|
||
│ │ └── link_filter.go # 链接过滤器
|
||
│ │
|
||
│ ├── prompt_reply/
|
||
│ | └── prompt_reply.go # 提示词自动回复
|
||
│ │
|
||
│ └── message_handler.go # 消息处理器
|
||
│
|
||
├── docker-compose.yml
|
||
├── Dockerfile.multi
|
||
├── go.mod
|
||
├── go.sum
|
||
├── main.go # 入口文件
|
||
└── README.md
|
||
```
|
||
## 设计规范
|
||
|
||
> 自己记录
|
||
|
||
1. 关于数据库的操作, 需要在运行时进行一次加载数据
|
||
2. 任何操作需要添加相关日志, 日志需要包含时间戳
|
||
3. 要使用全局的数据库实例`core.DB`, 相关代码如下:
|
||
- `init.go`里
|
||
``` go
|
||
// 初始化数据库
|
||
DB_FILE = filepath.Join("/app/data", "q58.db")
|
||
var err error
|
||
DB, err = NewDatabase()
|
||
if err != nil {
|
||
return fmt.Errorf("初始化数据库失败: %v", err)
|
||
}
|
||
```
|
||
|
||
## 贡献
|
||
|
||
欢迎提交 Issues 和 Pull Requests 来帮助改进这个项目。
|
||
|
||
## 许可证
|
||
|
||
[MIT License](LICENSE) |