Skip to content
Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

302 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hackeroos intern project: Rooby was built by Aadarsh Karki during a Hackeroos internship, based on product and community-tooling direction from Kasey Robinson (bitpixi). This repository is a fork of aadarsh1282/pika-bot and preserves Aadarsh's implementation credit.

Rooby demo

⚑ Rooby

AI-Powered Hackathon Intelligence & Community Automation Platform

Python discord.py GitHub Actions License Status Discord

Aggregates 250+ hackathons across 5 platforms Β· AI-driven Q&A Β· Real-time community moderation Β· Fully automated

⚑ Rooby is live. Join the Hackeroos Discord to see it in action β€” run /hackathons, /ask, or /poll in the server.


πŸ“Œ Overview

Rooby is a production-grade Discord bot and hackathon intelligence system built for the Hackeroos community. It continuously scrapes, deduplicates, and serves hackathon data from multiple platforms β€” providing community members with real-time event discovery, AI-powered Q&A, and automated moderation through a unified Discord interface.

Rooby solves three real problems:

  • Discovery fragmentation β€” hackathon events are scattered across Devpost, MLH, Lu.ma, Hack Club, and more
  • Community noise β€” unmoderated servers suffer from spam, raids, and content violations
  • Insight gap β€” participants and organizers lack structured, queryable data on trends and events

πŸš€ Try it Live

Rooby is running 24/7 in the Hackeroos Discord server. Join and interact with it directly:

Join Hackeroos Discord

Once inside, try these commands in #rooby-bots:

Command What to expect
/hackathons Live feed of 250+ upcoming hackathons
/ask upcoming AI-curated list with links and dates
/poll <question> Create a poll instantly
/winners See the community leaderboard
/rooby-help Full command reference

πŸš€ Key Features

πŸ” Hackathon Intelligence

  • Aggregates events from Devpost, MLH, Lu.ma, Hack Club, and Hackeroos into a single unified feed
  • Auto-deduplicates cross-platform listings
  • Posts new hackathons in real-time to the #all-hackathons Discord channel
  • Standardises all event data: title, dates, location, mode (Online / In-Person / Hybrid), source

πŸ€– AI-Powered Q&A

  • /ask command powered by Hugging Face (Qwen2.5 via gradio_client)
  • Users can query hackathon advice, ask community questions, or get project feedback
  • Infrastructure in place to evolve into a full RAG-based analytics assistant

πŸ“Š Community & Event Management

  • /hackathons β€” browse upcoming events
  • /poll β€” create instant community polls
  • /winners & /set-winner β€” track and celebrate hackathon winners
  • /verify β€” member onboarding and role assignment
  • Countdown announcements for curated Hackeroos-specific events

πŸ›‘οΈ Advanced Moderation

  • Spam detection with configurable rate-limit thresholds
  • Persistent strike system β€” violation tracking per user stored in strikes.json
  • Raid protection β€” detects and mitigates mass-join attacks
  • Word/content filtering with admin control
  • Thread-safe async state management via asyncio.Lock

βš™οΈ Automated Data Pipeline

  • Daily scraper runs at 05:00 UTC via GitHub Actions
  • Smart commit logic β€” only pushes when new data is detected ([skip ci] tagged)
  • Outputs a clean data/hackathons.json consumable by external frontends or APIs

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         Rooby System                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      Data Layer         β”‚          Bot Layer                  β”‚
β”‚                         β”‚                                     β”‚
β”‚  scrape_hackathons.py   β”‚           main.py                   β”‚
β”‚                         β”‚                                     β”‚
β”‚  Devpost  ──┐           β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  MLH  ───────           β”‚   β”‚  Slash Cmds β”‚  β”‚ Moderation β”‚  β”‚
β”‚  Lu.ma  ────┼──► merge  β”‚   β”‚ /hackathons β”‚  β”‚ Spam guard β”‚  β”‚
β”‚  Hack Club ──   dedupe  β”‚   β”‚ /ask        β”‚  β”‚ Raid guard β”‚  β”‚
β”‚  Hackeroos β”€β”˜     β”‚     β”‚   β”‚ /poll       β”‚  β”‚ Strikes    β”‚  β”‚
β”‚                   β”‚     β”‚   β”‚ /winners    β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  data/            β–Ό     β”‚   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β”‚  hackathons.json β—„β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β”‚
β”‚                         β”‚   AI Q&A (Hugging Face / Qwen2.5)  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                     CI/CD Layer                               β”‚
β”‚              GitHub Actions β€” Daily @ 05:00 UTC               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Folder Structure

Rooby-bot/
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── hackathons-scraper.yml   # Automated daily scraper (GitHub Actions)
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ hackathons.json              # Aggregated + deduplicated events (250+)
β”‚   └── hackeroos_events.json        # Curated Hackeroos community events
β”œβ”€β”€ docs/
β”‚   └── assets/                      # Screenshots, banners (add yours here)
β”œβ”€β”€ main.py                          # Discord bot β€” commands, moderation, AI Q&A
β”œβ”€β”€ scrape_hackathons.py             # Multi-source hackathon scraper
β”œβ”€β”€ requirements.txt                 # Python dependencies
β”œβ”€β”€ runtime.txt                      # Python version pin (3.11.8)
└── README.md

βš™οΈ Setup & Installation

Prerequisites

  • Python 3.11+
  • A Discord bot token (create one here)
  • Hugging Face token (optional β€” enables /ask AI feature)

1. Clone the repository

git clone https://github.com/bitpixi2/Rooby-bot.git
cd Rooby-bot

2. Create a virtual environment

python -m venv venv
source venv/bin/activate        # macOS / Linux
venv\Scripts\activate           # Windows

3. Install dependencies

pip install -r requirements.txt

4. Configure environment variables

Create a .env file in the project root:

# Required
DISCORD_TOKEN=your_discord_bot_token_here

# Optional β€” enables /ask AI feature
HF_TOKEN=your_huggingface_token_here

# Optional β€” custom hackathon feed endpoint
HACKATHONS_API_BASE=https://your-api-endpoint.com

5. Run the bot

python main.py

6. Run the scraper manually (optional)

python scrape_hackathons.py

The scraper runs automatically every day at 05:00 UTC via GitHub Actions. Running it manually refreshes data/hackathons.json immediately.


πŸ”Œ Live API

Rooby is backed by the Hackeroos Insights API β€” a production FastAPI service deployed on Railway that powers the bot's hackathon intelligence.

Base URL: https://hackeroos-insights-api-production.up.railway.app

Endpoint Method Description
/health GET Health check
/hackathons/upcoming GET Upcoming hackathons (filter by days, tag, mode, location)
/hackathons/stats GET Aggregate stats across the hackathon dataset

Interactive docs: https://hackeroos-insights-api-production.up.railway.app/redoc

Event Schema

{
  "title": "HackSydney 2026",
  "url": "https://devpost.com/hacksydney2026",
  "start_date": "Apr 28 - 29, 2026",
  "end_date": "2026-04-29T23:59:59Z",
  "location": "Sydney, Australia",
  "mode": "in-person",
  "source": "Devpost",
  "tags": ["ai", "fintech", "sustainability"],
  "description": "48-hour hackathon at the University of Sydney."
}

Supported Sources

Source Method Approx. Events
Devpost REST API ~100+
MLH Selenium (JS-rendered) ~50+
Lu.ma BeautifulSoup ~40+
Hack Club HTML scraper ~30+
Hackeroos Curated JSON ~20+

Consuming the feed

import json

with open("data/hackathons.json") as f:
    hackathons = json.load(f)

online = [h for h in hackathons if h.get("mode") == "online"]
print(f"{len(online)} online hackathons found")

πŸ€– Discord Commands

Command Description Access
/hackathons Browse upcoming hackathon events Everyone
/ask <question> AI-powered Q&A via Hugging Face Everyone
/poll <question> Create a community poll Everyone
/winners View hackathon winners leaderboard Everyone
/set-winner Record a hackathon winner Admin
/verify Member onboarding & role assignment Everyone
/rooby-help Show all available commands Everyone
/about About Rooby Everyone
/faq Frequently asked questions Everyone

πŸ”„ CI/CD Pipeline

Trigger: Daily cron at 05:00 UTC  (or manual via workflow_dispatch)
β”‚
β”œβ”€β”€ Checkout repo
β”œβ”€β”€ Setup Python 3.11
β”œβ”€β”€ pip install -r requirements.txt
β”œβ”€β”€ python scrape_hackathons.py
└── data/hackathons.json changed?
    β”œβ”€β”€ Yes β†’ git commit "Update hackathons JSON [skip ci]" + push
    └── No  β†’ skip (no unnecessary commits)

πŸ›£οΈ Roadmap

  • Multi-source hackathon aggregation (5 platforms)
  • Discord slash commands
  • AI Q&A via Hugging Face
  • Moderation system (spam, raids, strikes)
  • Automated daily scraper via GitHub Actions
  • RAG-based AI using the hackathon dataset as a knowledge base
  • Web dashboard for browsing hackathon analytics
  • Trend detection and winning pattern analysis
  • REST API for external integrations
  • User authentication & personalised event recommendations
  • MLOps pipeline for production model deployment
  • Real-time WebSocket feed for live event updates

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Commit your changes: git commit -m 'Add your feature'
  4. Push: git push origin feature/your-feature
  5. Open a Pull Request

πŸ“„ License

MIT License β€” see LICENSE for details.


Built with ⚑ by Aadarsh Karki

GitHub Β· Email

About

Hackeroos intern project by Aadarsh Karki, developed from product direction by Kasey Robinson (bitpixi): Discord automation and hackathon discovery.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages