{"id":28391288,"url":"https://github.com/withstudiocms/apollo","last_synced_at":"2025-06-25T21:31:37.882Z","repository":{"id":264382143,"uuid":"892817706","full_name":"withstudiocms/apollo","owner":"withstudiocms","description":"The repository for our Discord Bot.","archived":false,"fork":false,"pushed_at":"2025-04-04T20:04:00.000Z","size":96,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-20T16:18:08.107Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/withstudiocms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"studiocms"}},"created_at":"2024-11-22T20:51:52.000Z","updated_at":"2025-04-04T20:04:02.000Z","dependencies_parsed_at":"2024-12-15T11:20:01.849Z","dependency_job_id":"4c860374-9d8e-4785-a5eb-d755d13ea5ce","html_url":"https://github.com/withstudiocms/apollo","commit_stats":null,"previous_names":["withstudiocms/apollo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/withstudiocms/apollo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/withstudiocms%2Fapollo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/withstudiocms%2Fapollo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/withstudiocms%2Fapollo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/withstudiocms%2Fapollo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/withstudiocms","download_url":"https://codeload.github.com/withstudiocms/apollo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/withstudiocms%2Fapollo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261121385,"owners_count":23112526,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-05-31T08:40:03.288Z","updated_at":"2025-06-25T21:31:37.875Z","avatar_url":"https://github.com/withstudiocms.png","language":"TypeScript","funding_links":["https://opencollective.com/studiocms"],"categories":[],"sub_categories":[],"readme":"# Apollo\nApollo is a fully-configurable Discord Bot that helps with managing Discord Servers for OSS projects.\n\n## Table of Contents\n- [Tech Stack](#tech-stack)\n- [Getting Started / Prerequisites](#getting-started--prerequisites)\n  - [Environment Variables](#environment-variables)\n    - [Discord](#discord)\n    - [Turso](#turso)\n    - [GitHub](#github)\n  - [Starting the Bot](#starting-the-bot)\n    - [Docker](#docker)\n- [Commands](#commands)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Tech Stack\n- 🤖 Discord.js\n- 🌧️ Drizzle ORM\n- 🪶 libSQL\n\n## Getting Started / Prerequisites\nClone this repo and install all relevant dependencies. We recommend `pnpm` for doing so.\n\n### Environment Variables\nThe following environment variables need to be set in order for the bot to function:\n\n#### Discord\nYou can get these two from the [Discord Developer Portal](https://discord.com/developers)\nby creating a new app and configuring it to be a bot. Both of these are required.\n\n```env\nDISCORD_APP_TOKEN=...\nDISCORD_CLIENT_ID=...\n```\n\n#### Turso\nApollo uses a Turso database to store all relevant data, using Drizzle as it's ORM.\nBecause we're using `drizzle-orm/libsql/node`, you can theoretically run your database\nwith any of the allowed protocols.\n\nFor more information, check the [Drizzle ORM Documentation about drivers](https://orm.drizzle.team/docs/get-started-sqlite#step-2---initialize-the-driver).\n\n```env\nTURSO_URL=libsql://... # Required!\nTURSO_AUTH_TOKEN=... # Optional, only if you have an auth token! Not needed for local DBs.\n```\n\n#### GitHub\nThe `/ptal` command is powered by the GitHub API, for which you need to create a GitHub\nApp and install it in your organization, for yourself or for a specific repository.\n\nYou'll get the App ID and Client ID as soon as you create the app. The webhook secret you'll\nget when creating a webhook for your app installation, and the private key you need to add manually. \nYou also need to generate it yourself. The easiest way of doing so is by running the following \ncommand in your terminal (requires OpenSSL to be installed):\n\n```bash\nopenssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048\n```\n\nThe installation ID is a bit more tricky to get. We recommend you follow\n[GitHub's Documentation](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation#using-octokitjs-to-authenticate-with-an-installation-id)\nfor this.\n\n```env\nGITHUB_APP_ID=...\nGITHUB_CLIENT_ID=...\nGITHUB_WEBHOOK_SECRET=...\nGITHUB_INSTALLATION_ID=...\nGITHUB_PRIVATE_KEY=\"\n-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----\n\" # Multiline on purpose! Yes, this works.\n```\n\n### Starting the Bot\nOnce you've set all variables, start the bot by running:\n```bash\npnpm start\n```\n\n#### Docker\nThis project has its own Dockerfile which you can use to deploy the Bot in a container.\nBuild the image by running the following command in the root of the project after cloning it:\n\n```\ndocker build --tag \"apollo\" .\n```\n\nYou can then start a container with this image by running:\n\n```\ndocker run \"apollo\"\n```\n\nIf you want to run the image in the background, you can use the `--detach` flag:\n\n```\ndocker run --detach \"apollo\"\n```\n\n## Commands\n| Command                   | Description                                                                                             | Minimum Permissions |\n| ------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------- |\n| `/ptal`                   | Creates a PTAL announcement in the current channel and pings the notifications role (if configured).    | Moderate Members    |\n| `/settings`               | Command which carries the sub-commands for configuring the bot.                                         | Administrator       |\n| `/settings set-forum`     | Allows you to configure the Forum to be used for support requests.                                      | Administrator       |\n| `/settings set-ptal-role` | Sets the role that gets pinged when a new PTAL announcement is sent.                                    | Administrator       |\n| `/settings set-join-role` | Sets the role that a user receives when they join the server.                                           | Administrator       |\n| `/settings print`         | Prints an overview of all settings.                                                                     | Administrator       |\n| `/solved`                 | Sends an embed with buttons so the OP of a support request can close it. | Moderate Members    |\n| `/support`                | Creates a new post in the support forum based on the message you supply.                                | Moderate Members    |\n\n## Contributing\nSee our [Contribution Guide](https://github.com/withstudiocms/apollo/blob/main/CONTRIBUTING.md).\n\n## License\n© StudioCMS 2024. MIT Licensed.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwithstudiocms%2Fapollo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwithstudiocms%2Fapollo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwithstudiocms%2Fapollo/lists"}