sotsuba/yotsubactf
GitHub: sotsuba/yotsubactf
一个基于 Rust 的 Discord Bot,自动监控 CTFtime 赛事动态、推送通知、检索 writeup 并追踪队伍成绩,帮助 CTF 战队高效协作与备赛。
Stars: 9 | Forks: 0
# YotsubaCTF Discord Bot
[](https://github.com/sotsuba/yotsubactf/actions/workflows/ci.yml)
[](LICENSE)
[](https://www.rust-lang.org)
如果你不知道四叶是谁,这就是四叶。她来自漫画《**四叶草!**》(读读看吧,非常有趣)。

## 功能特性
### 核心 CTF 操作
- 浏览 CTFTime 赛事(即将举行/正在进行/已结束),以及倒计时和信息查询
- 为服务器订阅带有整洁 Discord embeds 的赛事通知
- 向指定频道发送每周 CTF 摘要
- 按关键词、赛事、类别或关注的队伍搜索和浏览 writeup
- 关注 CTFTime 队伍并发布最新成绩
- 为赛事、计时器或重复周期设置提醒
### 可选实用工具
- 密码/编码工具和哈希计算器
- 管理员角色映射,用于命令访问控制
## 截图展示
### 赛事命令
#### 即将举行的赛事

#### 赛事的下一步操作

### 更新通知方式
赛事和 writeup 将作为单独的通知发布。
#### 赛事

#### Writeup

### 警报机制
接入一个 Discord webhook,让你的服务器在你的 bot(或其他任何东西)被销毁的那一刻向你尖叫报警。

### Grafana 仪表板

## 技术栈
| 领域 | 工具 |
| --- | --- |
| 核心 | Rust (2024 edition), Twilight |
| 数据 | PostgreSQL (SQLx), Redis, Moka |
| 可观测性 | Prometheus, Grafana, Loki, Alertmanager, Promtail |
| 运维 | Docker Compose |
## 入门指南
### 前置条件
- [Rust](https://www.rust-lang.org/tools/install)(最新稳定版)
- [Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/install/)
- 一个 Discord Bot Token(来自 [Discord Developer Portal](https://discord.com/developers/applications))
### 快速开始
1. **克隆仓库**:
git clone https://github.com/sotsuba/yotsubactf.git
cd yotsubactf
2. **配置环境**:
cp .env.example .env
# 编辑 .env 并填入 DISCORD_TOKEN 和 DISCORD_APPLICATION_ID
3. **启动服务**:
docker compose up -d
## 开发、CI/CD 和部署
实用文件:
- [CONTRIBUTING.md](CONTRIBUTING.md):本地开发工作流、Git 分支工作流、Git 钩子和 SQLx 离线数据步骤
- [Bot 设置](docs/bot-setup.md):如何在你的服务器中设置 bot
- [API 端点](docs/api-endpoints.md):API 端点
- [Slash 命令](docs/slash-commands.md):Slash 命令
使用 Docker Compose 进行本地或私有托管。
### 标准本地开发
```
docker compose up -d
```
### 生产环境(本地)
- **生产环境**:`docker compose -f docker-compose.prod.yml --env-file .env.prod up -d`
### 设置说明
1. **配置环境文件**:将 `.env.example` 复制到 `.env.prod`
2. **数据库迁移**:在每个环境启动时运行
### 监控
监控默认处于关闭状态。启用完整技术栈(Prometheus, Grafana, Loki, Alertmanager, Promtail):
```
docker compose --profile monitoring up -d
```
仪表板:
- **Grafana**:[http://localhost:3030](http://localhost:3030)(默认登录:`admin` / `admin`)
- **Prometheus**:[http://localhost:9090](http://localhost:9090)
Gateway 和 Scheduler 仪表板已在 Grafana 中预置。
## 许可证
MIT @ sotsuba
标签:Alertmanager, CTFtime, Discord Bot, Docker, Grafana, Loki, Moka, PostgreSQL, Promtail, Redis, Rust, SQLx, Twilight, Webhook, Writeup, 力导向图, 可视化界面, 哈希计算, 团队追踪, 安全防御评估, 密码学, 开源, 手动系统调用, 搜索引擎查询, 测试用例, 版权保护, 监控告警, 网络安全, 网络流量审计, 自定义请求头, 资讯聚合, 赛题通知, 通知系统, 隐私保护