https://github.com/pwnwriter/pingme
Discord bot to scan and notify nearby CTF and hackathons.
https://github.com/pwnwriter/pingme
ctf discord-bot hackathons
Last synced: 27 days ago
JSON representation
Discord bot to scan and notify nearby CTF and hackathons.
- Host: GitHub
- URL: https://github.com/pwnwriter/pingme
- Owner: pwnwriter
- Created: 2026-06-08T02:44:18.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-08T04:55:39.000Z (about 1 month ago)
- Last Synced: 2026-06-08T06:27:06.395Z (about 1 month ago)
- Topics: ctf, discord-bot, hackathons
- Language: Python
- Homepage:
- Size: 30.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: .github/readme.md
Awesome Lists containing this project
README
# pingme
***Scans for upcoming hackathons and CTF competitions near you and sends Discord notifications. Runs on GitHub Actions — no server needed***

## Why
I missed more than 10 CTF competitions just because I didn't know they were happening nearby. By the time I'd find out, registration was closed or the event was already over. Built this so I'd never miss one again.
## Setup
1. Fork this repo
2. Edit `config.yaml` with your location
3. Add `DISCORD_BOT_TOKEN` and `DISCORD_CHANNEL_ID` as GitHub Actions secrets
4. Run from the Actions tab or wait for the next scheduled scan (Monday & Thursday, 9am EST)
Discord bot setup
> Full reference: [Discord Developer Docs — Getting Started](https://discord.com/developers/docs/getting-started)
**Create the bot:**
1. Go to [discord.com/developers/applications](https://discord.com/developers/applications) → **New Application**
2. Go to **Bot** → click **Reset Token** → copy the token (you'll only see it once)
3. Under **Privileged Gateway Intents**, enable **Message Content Intent**
**Invite it to your server:**
4. Go to **OAuth2** → **URL Generator**
5. Scope: `bot`
6. Permissions: `Send Messages`, `Manage Messages`, `Read Message History`, `View Channels`
7. Open the generated URL → select your server → **Authorize**
**Get the channel ID:**
8. In Discord → **User Settings** → **App Settings** → **Advanced** → enable **Developer Mode**
9. Right-click the channel you want notifications in → **Copy Channel ID**
**Add secrets to GitHub:**
10. In your fork → **Settings** → **Secrets and variables** → **Actions** → add two secrets:
- `DISCORD_BOT_TOKEN` — your bot token
- `DISCORD_CHANNEL_ID` — the channel ID
Configuration
```yaml
location:
city: "Baltimore"
lat: 39.2904
lon: -76.6122
radius_km: 200
include_online: true
sources:
ctftime: true
mlh: true
notify:
days_ahead: 21
```
| Field | Description |
|-------|-------------|
| `location.lat` / `location.lon` | Coordinates for distance filtering |
| `location.radius_km` | How far to search (km) |
| `location.include_online` | Include online/virtual events |
| `sources.ctftime` | Enable CTFtime scanning |
| `sources.mlh` | Enable MLH scanning |
| `notify.days_ahead` | How far ahead to look for events |
Run locally
```bash
DISCORD_BOT_TOKEN="your-token" DISCORD_CHANNEL_ID="123456" uv run main.py
```
## Sources
- [CTFtime](https://ctftime.org) — CTF competitions
- [MLH](https://mlh.io) — Hackathons
## Contributing
PRs welcome — especially new event sources. To add one, create a file in `sources/` that exports a `fetch_events(config) -> list[Event]` function and enable it in `config.yaml`.
Bug fixes, better parsing, and new notifiers (Slack, Telegram, etc.) are all fair game too.
## License
Licensed under the [**`MIT LICENSE`**](/LICENSE)

Copyright © 2026 - present pwnwriter me ☘️