{"id":13822201,"url":"https://github.com/avrae/avrae","last_synced_at":"2026-05-30T02:02:27.509Z","repository":{"id":37514052,"uuid":"80693828","full_name":"avrae/avrae","owner":"avrae","description":"A Discord bot to streamline running D\u0026D 5e.","archived":false,"fork":false,"pushed_at":"2026-04-28T19:00:55.000Z","size":13115,"stargazers_count":453,"open_issues_count":85,"forks_count":149,"subscribers_count":8,"default_branch":"nightly","last_synced_at":"2026-04-28T21:31:50.801Z","etag":null,"topics":["avrae","ddb","discord-bot","dnd5e","dungeons-and-dragons","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://avrae.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avrae.png","metadata":{"files":{"readme":"README-docker.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORTERS.md","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":"2017-02-02T04:40:12.000Z","updated_at":"2026-04-28T16:19:24.000Z","dependencies_parsed_at":"2023-10-20T17:59:12.960Z","dependency_job_id":"bebfe3cf-505e-4d60-8e05-93aa245692e2","html_url":"https://github.com/avrae/avrae","commit_stats":null,"previous_names":[],"tags_count":241,"template":false,"template_full_name":null,"purl":"pkg:github/avrae/avrae","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrae%2Favrae","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrae%2Favrae/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrae%2Favrae/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrae%2Favrae/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avrae","download_url":"https://codeload.github.com/avrae/avrae/tar.gz/refs/heads/nightly","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrae%2Favrae/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33677261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["avrae","ddb","discord-bot","dnd5e","dungeons-and-dragons","hacktoberfest"],"created_at":"2024-08-04T08:01:48.122Z","updated_at":"2026-05-30T02:02:27.493Z","avatar_url":"https://github.com/avrae.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Using Docker with Avrae Discord Bot\n\n## Prerequisites\n\n- [Docker Compose](https://docs.docker.com/compose/install/).\n- [Discord](https://discordapp.com/) account.\n- [Dicecloud v1](https://v1.dicecloud.com) account - do NOT register with Google, create a normal account.\n- [Dicecloud v2](https://dicecloud.com) account - do NOT register with Google, create a normal account.\n- [Google Drive Service Account](https://gspread.readthedocs.io/en/latest/oauth2.html).\n    - Follow steps 1-7 in the **For Bots: Using Service Account** portion. The contents of this JSON file is\n      your `GOOGLE_SERVICE_ACCOUNT` env var.\n    - Alternatively, save that json file in the root project directory as `avrae-google.json`.\n\n### Dicecloud v1\n\n- Click Username in top left top open Account page\n- `DICECLOUD_USER` is the login username\n- `DICECLOUD_PASS` is your password (recommended to use a dedicated bot account with a random generated password)\n- `DICECLOUD_TOKEN` is the `API KEY` revealed by `SHOW`\n\n### Dicecloud v2\n\n- Click gear in top left top open Account page\n- `DICECLOUDV2_USER` is the login username\n- `DICECLOUDV2_PASS` is your password (recommended to use a dedicated bot account with a random generated password)\n\n### Discord setup\n\n- `User Settings` (cog icon) \u003e `Advanced`, enable \"Developer Mode\".\n- Right-click your name in the user list and `Copy ID`, this is your `DISCORD_OWNER_USER_ID` below.\n- Create a server for yourself to test with: big `+` icon, `Create a server`.\n\n### Discord bot creation\n\n1. **Create the application**\n   - Go to the [Discord Developer Portal](https://discordapp.com/developers/).\n   - Click `New Application`, give it a name, then click `Create`.\n   - Copy the `Application ID` from `General Information` (you'll need this for the invite link).\n\n2. **Configure the bot**\n   - Navigate to the `Bot` tab.\n   - Under `Privileged Gateway Intents`, enable both `Server Members Intent` and `Message Content Intent`.\n   - Click `Save Changes`.\n\n3. **Generate the bot token**\n   - Still on the `Bot` tab, scroll down to `Token`.\n   - Reset the `Bot Token` by clicking `Reset Token` (verify authentication if prompted).\n   - Copy the token - this will be your `DISCORD_BOT_TOKEN` for the configuration.\n\n4. **Set privacy options (recommended so only you can add the bot to a server)**\n   - Navigate to the `Installation` tab.\n   - Select `None` from the `Install Link` dropdown.\n   - Click `Save Changes`.\n   - Navigate to the `Bot` tab, scroll down to `Authorization Flow` and toggle off the `Public Bot` option.\n   - Click `Save Changes`.\n\n5. **Add bot to your server**\n   - Use this URL to invite your bot: `https://discordapp.com/oauth2/authorize?permissions=274878295104\u0026scope=bot\u0026client_id=YOUR_APPLICATION_ID`\n   - Replace `YOUR_APPLICATION_ID` with the Application ID you copied earlier.\n   - Select your server from the dropdown and authorize the bot.\n\n## Docker Compose magic\n\n1. Create a `docker\\env` file with real credentials (Reference the example below).\n2. Run `docker-compose up --build`.\n3. Wait for the bot to start up and join your server.\n4. Stop the bot by pressing `Ctrl+C` in the terminal.\n5. Run `docker-compose down -v` to remove the containers and volumes.\n\n### docker\\env file (dev)\n\n    DISCORD_BOT_TOKEN=1\n    DICECLOUD_USER=b\n    DICECLOUD_PASS=c\n    DICECLOUD_TOKEN=d\n    \n    DICECLOUDV2_USER=e\n    DICECLOUDV2_PASS=f\n\n    # set these to these literal values\n    MONGO_URL=mongodb://root:topsecret@mongo:27017\n    REDIS_URL=redis://redis:6379/0\n    \n    # set this to the contents of the JSON file downloaded in the Google Drive Service Account step\n    GOOGLE_SERVICE_ACCOUNT=g\n\n### Development with Kafka\n\nIf you're developing a feature that requires Kafka, you can either copy the `docker-compose.kafka-dev.yml` file to `docker-compose.override.yml` or pass it as an argument to `docker-compose`:\n\n```bash\ndocker-compose -f docker-compose.yml -f docker-compose.kafka-dev.yml up --build\n```\n\nThis will add the Kafka `broker` service and set up the necessary environment variables for Avrae to connect to Kafka.\n\nTo watch the messages being sent to Kafka, you can use the `kafka-console-consumer` command:\n\n```bash\ndocker exec -it avrae-broker-1 /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic dnddev_avraebot --from-beginning\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favrae%2Favrae","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favrae%2Favrae","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favrae%2Favrae/lists"}