fepfitra/flaggers-bot
GitHub: fepfitra/flaggers-bot
一个基于 Rust 构建的 Discord 机器人与 CLI 工具,用于集成 CTFtime 赛事信息并自动化处理 CTFd 平台的题目抓取与频道管理。
Stars: 0 | Forks: 0
# flaggers_bot
一个用于 CTF(夺旗赛)活动的 CLI 和 Discord 机器人。
## 功能
- **CTFtime 集成**
- 查看正在进行的 CTF
- 浏览即将开始的 CTF
- 查看 CTFtime 排行榜
- 查看进行中 CTF 的剩余时间
## 命令
```
/about - Show bot version, RAM usage, and binary size
/update - Update bot to latest version
/ctftime_current - Show currently running CTFs
/ctftime_upcoming - Show upcoming CTFs
/ctftime_top - Show CTFtime leaderboard
/ctftime_timeleft - Show time left for running CTFs
/dump - Dump challenges from a CTFd site (creates threads)
/archive - Move channel from active to archive category
/active - Move channel from archive to active category
```
### /dump 命令
从 CTFd 实例转储题目。
**Discord(创建线程):**
```
/dump
```
**CLI(本地下载文件):**
```
flaggers_bot dump --site https://ctf.example.com --token
```
示例:`/dump https://ctf.example.com your_access_token`
- 为每道题目创建一个线程(格式:“category/challenge_name”)
- 将题目详情(分类、分值、描述)发送到每个线程
- 仅在“active-mabar-ctf”或“archive-mabar-ctf”分类下的频道中有效
- 需要 **Administrator** 权限或 `Create Public Threads` + `Send Messages` 权限
### CTF 频道按钮
每个 CTF 嵌入消息都有 **Create** 和 **Join** 按钮:
- **Create**:在“active-mabar-ctf”分类下创建一个文本频道并将你添加进去
- **Join**:将你添加到该 CTF 的现有频道中
## Discord 机器人设置
1. 前往 [Discord Developer Portal](https://discord.com/developers/applications)
2. 点击 **New Application** 并为其命名
3. 转到左侧边栏的 **Bot** 部分
4. 点击 **Reset Token** 获取你的机器人 token(请保存,否则稍后需重新生成)
5. 在 **Privileged Gateway Intents** 下,启用:
- `MESSAGE CONTENT INTENT`(命令必需)
6. 转到 **OAuth2 > URL Generator**
7. 在 **Scopes** 下,选择:
- `bot`
8. 在 **Bot Permissions** 下,选择:
- `Administrator`(在分类中创建频道/线程所需)
9. 复制生成的 URL 并邀请机器人加入你的服务器
**注意:** 邀请此机器人加入服务器的人员需在该服务器中拥有 `Manage Server` 权限。
**注意:** 仅支持 Linux(systemd)。macOS 支持即将推出!欢迎贡献代码。
## 安装
### Docker Compose(推荐)
```
# 拉取最新配置示例
curl -sL https://raw.githubusercontent.com/fepfitra/flaggers-bot/master/docker-compose.yml -o docker-compose.yml
curl -sL https://raw.githubusercontent.com/fepfitra/flaggers-bot/master/config.json.example -o config.json.example
# 复制并编辑配置
cp config.json.example config.json
# 使用您的 Discord token 编辑 config.json
# 启动机器人
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止机器人
docker-compose down
```
### Docker
```
# 拉取最新镜像
docker pull ghcr.io/fepfitra/flaggers-bot:latest
# 创建配置目录
mkdir -p ~/.config/flaggers_bot
# 创建配置文件
echo '{"discord_token": "YOUR_TOKEN"}' > ~/.config/flaggers_bot/config.json
# 运行机器人
docker run -d \
--name flaggers_bot \
-v ~/.config/flaggers_bot:/root/.config/flaggers_bot \
ghcr.io/fepfitra/flaggers-bot:latest
```
### 快速安装(仅二进制文件,无 systemd)
```
curl -sL https://raw.githubusercontent.com/fepfitra/flaggers-bot/master/install.sh | sh
```
这将下载二进制文件并设置权限。如果你希望将 Discord 机器人作为 systemd 服务运行,请单独执行 `flaggers_bot install-systemd`。
## 用法
```
# 直接运行机器人
flaggers_bot run
# 安装 systemd 服务(运行一次,仅适用于 Discord 机器人)
flaggers_bot install-systemd
# Daemon 管理(仅适用于 Discord 机器人)
flaggers_bot daemon start
flaggers_bot daemon stop
flaggers_bot daemon restart
flaggers_bot daemon status
flaggers_bot daemon logs
flaggers_bot daemon uninstall
# 从 CTFd 站点转储 challenges(CLI,本地下载文件)
flaggers_bot dump --site https://ctf.example.com --token
# 更新至最新版本(仅限 Linux/systemd,Docker 中不可用)
flaggers_bot --update
# 卸载机器人(移除 systemd 服务和二进制文件)
flaggers_bot --uninstall
# 显示版本
flaggers_bot --version
```
### 从 Release 获取
从 [GitHub Releases](https://github.com/fepfitra/flaggers-bot/releases) 下载最新的二进制文件。
### 从源码构建
```
# 克隆仓库
git clone https://github.com/fepfitra/flaggers-bot.git
cd flaggers_bot
# 构建
cargo build --release
```
## 配置
机器人需要一个 Discord 机器人 token(参见 [Discord Bot Setup](#discord-bot-setup) 第 4 步)。
首次运行时,机器人会提示输入你的 Discord token。
token 会保存到 `~/.config/flaggers_bot/config.json`:
```
{
"discord_token": "your_token_here"
}
```
## 开发
```
# 在开发模式下运行
cargo run -- --version
# 在发布模式下运行
cargo run --release -- --version
# 构建、安装并重启(开发工作流)
./dev.sh
# 运行 clippy
cargo clippy
# 发布新版本(patch、minor 或 major)
./publish.sh patch # 0.1.0 -> 0.1.1
./publish.sh minor # 0.1.0 -> 0.2.0
./publish.sh major # 0.1.0 -> 1.0.0
```
## 许可证
MIT
标签:CLI 工具, CTFd, CTFtime, Discord 机器人, Rust, 可视化界面, 团队协作, 夺旗赛, 开源, 抓取工具, 文档结构分析, 比赛辅助, 网络安全, 网络流量审计, 网络调试, 自动化, 请求拦截, 通知系统, 隐私保护, 频道管理