{"id":44708071,"url":"https://github.com/helldivers-2/discord-bot","last_synced_at":"2026-02-15T11:13:05.343Z","repository":{"id":229073378,"uuid":"768908262","full_name":"helldivers-2/discord-bot","owner":"helldivers-2","description":"Welcome to the repo for HellCom Discord bot! This bot is intended to be a helper/utility for Helldivers's community. Democracy!","archived":false,"fork":false,"pushed_at":"2025-06-08T01:05:53.000Z","size":2005,"stargazers_count":17,"open_issues_count":7,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-08T01:38:31.227Z","etag":null,"topics":["discord","discord-bot","discord-js","helldivers","helldivers-2","unofficial"],"latest_commit_sha":null,"homepage":"https://discord.com/application-directory/1213944670288347176","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/helldivers-2.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}},"created_at":"2024-03-08T00:30:50.000Z","updated_at":"2025-06-08T01:05:58.000Z","dependencies_parsed_at":"2024-05-19T05:25:56.233Z","dependency_job_id":"fcfb4ca8-1dfe-41b8-9346-27ae1b0298f9","html_url":"https://github.com/helldivers-2/discord-bot","commit_stats":null,"previous_names":["jgaribsin/helldivers2-bot","jgaribsin/hellcom","helldivers-2/discord-bot"],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/helldivers-2/discord-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helldivers-2%2Fdiscord-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helldivers-2%2Fdiscord-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helldivers-2%2Fdiscord-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helldivers-2%2Fdiscord-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helldivers-2","download_url":"https://codeload.github.com/helldivers-2/discord-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helldivers-2%2Fdiscord-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29476300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T10:25:47.032Z","status":"ssl_error","status_checked_at":"2026-02-15T10:25:01.815Z","response_time":118,"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":["discord","discord-bot","discord-js","helldivers","helldivers-2","unofficial"],"created_at":"2026-02-15T11:13:04.821Z","updated_at":"2026-02-15T11:13:05.329Z","avatar_url":"https://github.com/helldivers-2.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HellCom\n\nThis is the repo for the Discord bot HellCom StratDef Network, a Helldivers 2 community bot. This project is meant to be a utility/helper bot for any Helldivers Discords!\n\nHellCom features live updates about the in-game war, easy and convenient ways to check in with the game's progress, and allows you to get notifications for any in-game event, so you can stay up to date on your fellow Helldivers' progress while you're offline!\n\nHellCom will be continuously updated and improved. It is a community-driven project, so if there's a feature you'd like to see, feel free to suggest it in our Discord! Improvements and addition suggestions are always welcome =)\n\nYou can add it to your own server using **[this link (click)](https://discord.com/application-directory/1213944670288347176)**.\n\n## Commands\n\n\u003cdetails open\u003e\n  \u003csummary\u003eDiscord Slash Commands \u003c/summary\u003e\n\n- `/campaign`: Campaign-related information (playable planets)\n  - `/campaign list`: Gives an overview of all currently active planets with some stats for each one\n  - `/campaign most`: Gives an overview of the campaign with the most active players\n  - `/campaign info \u003cPLANET_NAME\u003e`: Gives an overview of a campaign on a _specified_ planet. Has automcomplete for active campaigns\n- `/community`: Highlights other community projects with a description and link(s)\n- `/discord`: Information about HellCom's partnered/support server, as well as support links (eg. donations, voting)\n- `/dispatches`: Shows a list of in-game dispatch messages with timestamps\n- `/events`: In-game \"\"events\"\" -- kind of outdated, this was made before the NewsFeed API existed\n  - `/events all`: Shows all active events\n  - `/events latest`: Shows the most recent event\n- `/history`: Shows historical data, currently via line graphs\n  - `/history players`: Generates a graph for historical player counts (per faction, and total)\n- `/map`: Generates galactic maps dynamically!\n  - `/map galaxy`: Shows an image of the entire galaxy with planets mapped onto it -- names are shown for planets we don't control\n  - `/map planet \u003cPLANET_NAME\u003e`: Similar to above, but zooms in on a specified planet -- additionally shows campaign info (players, lib%)\n- `/planet`\n  - `/planet list`: (Gotta move this) Shows a summary of the current in-game status such as campaigns (+progress) and major order (if there is one)\n  - `/planet info \u003cPLANET_NAME\u003e`: Shows some information about a specified planet -- not limited to active campaigns\n- `/subscribe`\n  - `/subscribe event`: Allows users to \"subscribe\" a channel to event updated. The bot will then post updates about the war in that channel as it happens -- stuff like winning (or losing!) a campaign, getting access to a new planet, new dispatch messages, new major orders.\n  - `/subscribe status`: Sends a message in the channel the command was used, displays summary information (identical to `/planet list`) and will update after certain intervals automatically.\n\n\u003c/details\u003e\n\nIf you notice any issues, or have a suggestion, feel free to contact me via Discord @`theyodastream`.\n\n## Contributing\n\n### Wiki Source\n\nThe `/wiki` command uses JSON files as the source for its \"categories\" and \"pages\", found in [this directory](./wiki/). The aim is to allow people who aren't familiar with programming to still contribute, as it is mostly just text fields. To add/change/remove categories/pages, only the JSON files need to be modified.\n\n```txt\nroot\n├── src\n│   └── ...\n└── wiki\n    ├── index.json\n    ├──  automatons\n    │   └── berserker.json\n    │   └── ... other json files (pages)\n    ├─── terminids\n    │   └── bile_titan.json\n    │   └── ... other json files (pages)\n    └── ... other folders (categories)\n```\n\n`index.json` root file. This file defines the categories and related information (eg. display name, emoji, description, etc.)\n\n```json\n[\n  // Example, filled out categories page\n  {\n    \"directory\": \"eagles\",\n    \"display_name\": \"Eagles\",\n    \"content\": \"As a commander of a Destroyer, you can call in an Eagle to provide air support. Eagle call-ins are quite fast, having little to no call-in times, making them a versatile choice for your loadout.\\n\\nEagles have a certain number of uses per re-arm, after which it returns to the Super Destroyer for an extended period to resupply before coming back online. The number of uses varies depending on the types selected, with chaff-clearers (such as Clusters, or Strafing) having a higher number of uses, while heavy-hitters (such as the 500KG Bomb) tend to have fewer uses.\",\n    \"fields\": [\n      {\n        \"name\": \"Base Rearm Time\",\n        \"value\": \"150 seconds\",\n        \"inline\": false\n      }\n    ],\n    \"emoji\": \"\u003c:eagle_strafing_run:1220789245724065792\u003e\",\n    \"thumbnail\": \"https://xywpvislkizlfztycqhf.supabase.co/storage/v1/object/public/hellcom/stratagems/eagle_strafing_run.png\",\n    \"image\": \"https://cdn.discordapp.com/attachments/1220852151769894993/1220852308833992866/eagle_fly_in.gif?ex=66107250\u0026is=65fdfd50\u0026hm=e41f85c2cc8a4b76ed5522658336380a39a004d2236142711b85203207241643\u0026\"\n  },\n  // JSON structure\n  {\n    // defining a category, each item in the index.json arr is a category\n    \"directory\": \"\", // relative directory name, used to load json pages\n    \"display_name\": \"\", // display name of the category, should be pretty -- include caps, spaces\n    \"content\": \"\", // text content on the category page, supports discord markdown\n    \"fields\": [\n      // discord embed fields,\n      {\n        \"name\": \"\", // title of a field, bolded\n        \"value\": \"\", // contents of the field, supports discord markdown\n        \"inline\": true // bool val for displaying this field in-line with others\n      }\n    ],\n    \"emoji\": \"\", // discord emoji, to display as the icon when selecting a category\n    \"thumbnail\": \"\", // image to show at the top left, smaller image\n    \"image\": \"\" // image to show as the bottom, primary image\n  }\n]\n```\n\nIndividual page JSON file. Located within each category directory. An example ~completed file can be found at [here](./wiki/terminids/bile_titan.json).\n\n```json\n// JSON structure\n{\n  \"page\": \"\", // page id, lowercase, no spaces, must be unique\n  \"title\": \"\", // display name of the category, should be pretty -- include caps, spaces\n  \"description\": \"\", // short description shown when selecting a page\n  \"content\": \"\", // text content on the category page, supports discord markdown\n  \"fields\": [\n    // discord embed fields,\n    {\n      \"name\": \"\", // title of a field, bolded\n      \"value\": \"\", // contents of the field, supports discord markdown\n      \"inline\": true // bool val for displaying this field in-line with others\n    }\n  ],\n  \"emoji\": \"\", // discord emoji, to display as the icon when selecting a category\n  \"thumbnail\": \"\", // image to show at the top left, smaller image\n  \"image\": \"\" // image to show as the bottom, primary image\n}\n```\n\nTODO: add image examples\n\n## Development\n\nStyled with [![Code Style: Google](https://img.shields.io/badge/code%20style-google-blueviolet.svg)](https://github.com/google/gts)  \nCreated with [![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)[![Static Badge](https://img.shields.io/badge/discord.js-0a168d?style=for-the-badge)](https://discord.js.org/)  \nPostgres DB on [![Supabase](https://img.shields.io/badge/Supabase-3ECF8E?style=for-the-badge\u0026logo=supabase\u0026logoColor=white)](https://supabase.com/)  \nLogging/Metrics with [![Static Badge](https://img.shields.io/badge/New%20Relic-2fdd88?style=for-the-badge)](https://newrelic.com/platform)  \nDeployed with ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge\u0026logo=kubernetes\u0026logoColor=white)\n\nContainer images are built via [GitHub Actions](/.github/workflows/build.yml) and uploaded to GitHub Container Registry (this repo's GHCR).  \nGH Actions also handles semantic versioning using commit message substrings, saving them as GitHub tags (eg. `v0.0.30):\n\n- `#skip-ci`: Skips the workflow completely; Useful if changing things unrelated to code (eg. README)\n- `#none`: Builds new image, but with no semver change (eg. `v1.2.3` -\u003e `v.1.2.3`)\n- `#patch`: Increments patch version (eg. `v1.2.3` -\u003e `v.1.2.4`)\n- `#minor`: Increments minor version (eg. `v1.2.3` -\u003e `v.1.3.3`)\n- `#major`: Increments major version (eg. `v1.2.3` -\u003e `v.2.2.3`)\n  \u003e If omitted, GHA will default to `none` (building image, no semver change).\n\nWhen building the image, this semver is included in the image and can be safely used. The version in [package.json](./package.json) is not used.\n\n### Local Development\n\nTo set things up:\n\n```shell\n# Clone the repository locally\ngit clone https://github.com/helldivers-2/discord-bot.git\ncd helldivers2-bot\n# Install dependencies\nnpm install\n```\n\nTo run the bot locally (or when deploying), you'll need some env vars:\n\n- `BOT_TOKEN` - Discord bot token, gotten from [Discord's developer portal](https://discord.com/developers/applications) (for more info, see [their docs](https://discord.com/developers/docs/intro))\n- `DATABASE_URL` - PostgreSQL database connection string\n- `NEW_RELIC_APP_NAME` - Display name for New Relic logs\n- `NEW_RELIC_LICENSE_KEY` - New Relic API Key (type: INGEST-LICENSE)\n- `NODE_ENV` - \"development\" or \"production\"\n\nRunning the application (watch mode)\n\n```shell\nnpm run watch\n```\n\nYou can view the Database locally via [Drizzle Studio](https://orm.drizzle.team/drizzle-studio/overview). Ensure `DATABASE_URL` is set up, per above.\n\n```shell\nnpx drizzle-kit studio\n```\n\nBuilding the application locally, or a Docker image:\n\n```shell\n# Build locally\nnpm run build\n# Build Docker image\ndocker build . -t hellcom:latest\n```\n\nMore documentation to come as I remember/verify things.\n\n\u003e Thanks for reading, have an awesome day!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelldivers-2%2Fdiscord-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelldivers-2%2Fdiscord-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelldivers-2%2Fdiscord-bot/lists"}