{"id":49579243,"url":"https://github.com/suvodeep12/rift-herald","last_synced_at":"2026-05-03T18:31:43.941Z","repository":{"id":299178695,"uuid":"1002184628","full_name":"suvodeep12/rift-herald","owner":"suvodeep12","description":"A Discord bot built with Node.js and the Riot Games API to track and announce daily League of Legends ranked LP changes with interactive slash commands.","archived":false,"fork":false,"pushed_at":"2025-12-04T13:59:08.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-07T20:54:28.549Z","etag":null,"topics":["cron","discord-bot","discordjs","javascript","league-of-legends","lol-stats","nodejs","riot-api","sqlite"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/suvodeep12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-14T22:37:49.000Z","updated_at":"2025-12-04T13:59:12.000Z","dependencies_parsed_at":"2025-06-15T06:42:26.883Z","dependency_job_id":null,"html_url":"https://github.com/suvodeep12/rift-herald","commit_stats":null,"previous_names":["suvodeep12/daily-rift-herald","suvodeep12/rift-herald"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/suvodeep12/rift-herald","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvodeep12%2Frift-herald","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvodeep12%2Frift-herald/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvodeep12%2Frift-herald/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvodeep12%2Frift-herald/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suvodeep12","download_url":"https://codeload.github.com/suvodeep12/rift-herald/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvodeep12%2Frift-herald/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32579703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cron","discord-bot","discordjs","javascript","league-of-legends","lol-stats","nodejs","riot-api","sqlite"],"created_at":"2026-05-03T18:31:43.256Z","updated_at":"2026-05-03T18:31:43.936Z","avatar_url":"https://github.com/suvodeep12.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 👾 Rift Herald\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Node](https://img.shields.io/badge/node-v16.9.0+-green.svg)\n![Discord.js](https://img.shields.io/badge/discord.js-v14-5865F2.svg)\n\n**Rift Herald** is a professional-grade Discord bot designed to track League of Legends ranked progress. It provides automated daily LP updates, live server leaderboards, and detailed profile lookups with a focus on visual elegance and reliability.\n\nUnlike basic bots, Rift Herald tracks players by their **PUUID**, meaning it never breaks—even if a player changes their Riot ID.\n\n---\n\n## ✨ Key Features\n\n- **🔄 Automated Daily Updates:** Automatically posts LP gains/losses, promotions, and demotions to a configured channel every day.\n- **🏆 Live Leaderboard:** A real-time, sorted leaderboard for your server, complete with rank icons and win rates.\n- **🆔 PUUID Tracking:** Tracks the _account_, not the name. Handles name changes automatically.\n- **🏢 Multi-Guild Support:** Works across multiple Discord servers with independent tracking lists.\n- **🎨 Visual Elegance:** Uses custom server emojis for Rank Icons (Iron - Challenger) and dynamic color-coded embeds.\n- **⚡ Rate Limit Handling:** Smart queuing system to respect Riot API limits.\n\n---\n\n## 🛠️ Prerequisites\n\n- **Node.js** (v16.9.0 or higher)\n- **NPM** or **Yarn**\n- **Discord Bot Token** ([Get it here](https://discord.com/developers/applications))\n- **Riot Games API Key** ([Get it here](https://developer.riotgames.com/))\n\n---\n\n## 🚀 Installation \u0026 Setup\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/yourusername/rift-herald.git\ncd rift-herald\n```\n\n### 2. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 3. Configure Environment\n\nCreate a `.env` file in the root directory:\n\n```bash\ntouch .env\n```\n\nOpen it and paste the following configuration:\n\n```env\n# Discord Configuration\nDISCORD_TOKEN=your_discord_bot_token\nCLIENT_ID=your_discord_application_id\n\n# Riot Games Configuration\nRIOT_API_KEY=your_riot_api_key\n\n# Cron Schedule (Default: Daily at 8:00 PM Asia/Kolkata)\nCRON_SCHEDULE=0 20 * * *\nCRON_TIMEZONE=Asia/Kolkata\n```\n\n### 4. Deploy Slash Commands\n\nRegister the commands with Discord:\n\n```bash\nnode deploy-commands.js\n```\n\n### 5. Start the Bot\n\n```bash\nnode src/index.js\n```\n\n_(For production, use PM2: `pm2 start src/index.js --name \"rift-herald\"`)_\n\n---\n\n## 🎨 Visual Setup (Important)\n\nFor the **Leaderboard** and **Rank Updates** to look 10/10, you must upload custom emojis to your Discord server.\n\n1.  Go to **Server Settings \u003e Emoji**.\n2.  Upload rank icons (download them from the LoL Wiki or similar).\n3.  **Name them exactly like this:**\n    - `iron`, `bronze`, `silver`, `gold`, `platinum`, `emerald`, `diamond`, `master`, `grandmaster`, `challenger`.\n\nThe bot automatically detects these emojis and renders them in the embeds.\n\n---\n\n## 🎮 Commands\n\n| Command                                         | Description                                           |\n| :---------------------------------------------- | :---------------------------------------------------- |\n| `/setup channel:\u003c#channel\u003e`                     | **(Admin)** Configure where daily updates are posted. |\n| `/track riot_id:\u003cName#Tag\u003e region:\u003cSG2/NA1...\u003e` | Start tracking a player's ranked progress.            |\n| `/untrack player:\u003cSelect from list\u003e`            | Stop tracking a player (Autocomplete supported).      |\n| `/lolranking`                                   | Show the server's live ranked leaderboard.            |\n| `/lolprofile riot_id:\u003cName#Tag\u003e`                | Lookup a player's current rank and stats instantly.   |\n\n---\n\n## 📂 Project Structure\n\n```text\nrift-herald/\n├── data/                  # SQLite Database storage\n├── src/\n│   ├── commands/          # Slash Command definitions\n│   ├── core/              # Database \u0026 Riot API Logic\n│   ├── events/            # Discord Event Handlers\n│   ├── tasks/             # Cron Jobs (Daily LP Check)\n│   ├── utils/             # Embed builders \u0026 helpers\n│   └── index.js           # Entry point\n├── .env                   # Secrets\n└── deploy-commands.js     # Command registration script\n```\n\n---\n\n## ⚠️ Maintenance Note\n\nIf you are using a standard **Riot Development Key**, it expires every **24 hours**.\nIf the bot starts throwing `403 Forbidden` errors:\n\n1.  Go to [Riot Developer Portal](https://developer.riotgames.com/).\n2.  Regenerate Key.\n3.  Update `.env`.\n4.  Restart Bot.\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n**Built with ❤️ by Suvodeep Ghosh**\n\n```\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuvodeep12%2Frift-herald","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuvodeep12%2Frift-herald","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuvodeep12%2Frift-herald/lists"}