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, 可视化界面, 团队协作, 夺旗赛, 开源, 抓取工具, 文档结构分析, 比赛辅助, 网络安全, 网络流量审计, 网络调试, 自动化, 请求拦截, 通知系统, 隐私保护, 频道管理