{"id":35807476,"url":"https://github.com/patrickklaeren/accord","last_synced_at":"2026-06-27T12:00:49.858Z","repository":{"id":42075054,"uuid":"374787750","full_name":"patrickklaeren/Accord","owner":"patrickklaeren","description":"A C# Discord bot with moderation, XP/guild participation and utilities","archived":false,"fork":false,"pushed_at":"2026-06-23T07:56:24.000Z","size":3182,"stargazers_count":17,"open_issues_count":3,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-23T09:09:18.001Z","etag":null,"topics":["bot","csharp","discord","dotnet"],"latest_commit_sha":null,"homepage":"","language":"C#","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/patrickklaeren.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":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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2021-06-07T20:08:00.000Z","updated_at":"2026-06-23T07:56:28.000Z","dependencies_parsed_at":"2023-11-15T17:59:31.852Z","dependency_job_id":null,"html_url":"https://github.com/patrickklaeren/Accord","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/patrickklaeren/Accord","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickklaeren%2FAccord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickklaeren%2FAccord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickklaeren%2FAccord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickklaeren%2FAccord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrickklaeren","download_url":"https://codeload.github.com/patrickklaeren/Accord/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickklaeren%2FAccord/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34852282,"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-06-27T02:00:06.362Z","response_time":126,"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":["bot","csharp","discord","dotnet"],"created_at":"2026-01-07T13:54:36.280Z","updated_at":"2026-06-27T12:00:49.853Z","avatar_url":"https://github.com/patrickklaeren.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Accord\n\u003cp align=\"center\"\u003e\n    \u003cimg alt='Accord Logo' src='branding/readme-banner.png'/\u003e\n\u003c/p\u003e\n\n## Reach accord, prevent discord, on Discord.\n\nA C# .NET Discord bot with moderation, XP/guild participation and utilities aimed at all users within a guild. This is not a hosted bot, it is intended to be self hosted.\n\n## How to self host\n\nYou can build from source or host via the published Docker image. An example `docker-compose.yml` is below.\n\n```yml\nservices:\n  postgres:\n    image: postgres\n    restart: always\n    environment:\n      POSTGRES_USER: ${POSTGRES_USER}\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}\n\n  bot:\n    image: ghcr.io/patrickklaeren/accord:main\n    depends_on:\n      - postgres\n    restart: always\n    environment:\n      ConnectionStrings__accord: ${CONNECTIONSTRINGS_DATABASE}\n      AppBaseUrl: ${APPBASEURL}\n      ReplBaseUrl: ${REPLBASEURL}\n      PasteBaseUrl: ${PASTEBASEURL}\n      Discord__ClientSecret: ${DISCORD_CLIENTID}\n      Discord__ClientId: ${DISCORD_CLIENTID}\n      Discord__GuildId: ${DISCORD_GUILDID}\n      Discord__BotToken: ${DISCORD_BOTTOKEN}\n      Shlink__BaseUrl: ${SHLINK_BASEURL}\n      Shlink__APIKey: ${SHLINK_APIKEY}\n```\n\nAccord can optionally connect to a C# REPL service, via the REPL module. You can self-host this:\n\n```yml\n  repl:\n    image: ghcr.io/discord-csharp/csharprepl:latest\n    environment:\n      - ASPNETCORE_URLS=http://+:31337\n```\n\nWhen using the REPL service, Accord also makes use of a \"paste service\", in this case: https://github.com/matze/wastebin. You can self-host this:\n\n```yml\n  wastebin:\n    image: quxfoo/wastebin:latest\n    ports:\n      - \"8088:8088\"\n```\n\nAccord also has a link shortening service via https://github.com/shlinkio/shlink. You can self-host this:\n\n```yml\n  shlink:\n    image: \"ghcr.io/shlinkio/shlink:latest\"\n    ports:\n      - \"8080:8080\"\n```\n\n| Variable                    | Description                                                                                                                                                                                                                                                                                           |\n|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `ConnectionStrings__accord` | Connection string to the PostgreSQL database.                                                                                                                                                                                                                                                         |\n| `AppBaseUrl`                | Base URL to the Accord website. If you do not intend to use the web frontend, set the value to `http://`. Otherwise, configure it to be your main domain that will point to the service.                                                                                                              |\n| `ReplBaseUrl`               | Base URL to the REPL service used by the REPL module. If you do not intend to use this service, set the value to `http://`. Otherwise, configure it to point to the appropriate service endpoint.                                                                                                     |\n| `PasteBaseUrl`              | Base URL to the paste service. If you do not intend to use this service, set the value to `http://`. Otherwise, configure it to point to the appropriate service endpoint. If the REPL service is configured, but no paste service is provided, the REPL service may fail to post results in Discord. |\n| `Discord__ClientId`         | Client ID of your Discord application.                                                                                                                                                                                                                                                                |\n| `Discord__ClientSecret`     | Client secret of your Discord application.                                                                                                                                                                                                                                                            |\n| `Discord__GuildId`          | Guild (server) snowflake ID that the bot will connect to.                                                                                                                                                                                                                                             |\n| `Discord__BotToken`         | Bot token of your Discord application.                                                                                                                                                                                                                                                                |\n| `Shlink__BaseUrl`           | Base URL to the Shlink instance for link shortening. If you do not intend to use this service, set the value to `http://`. Otherwise, configure it to point to the appropriate service endpoint.                                                                                                      |\n| `Shlink__ApiKey`            | API Key generated in your Shlink instance in order for the Rest API to authenticate requests.                                                                                                                                                                                                         |\n\nThis bot is intended for **single-guild** usage.\n\n## Credits\n\nNotable dependencies for this project include:\n- [Remora](https://github.com/Nihlus/Remora.Discord)\n- [MediatR](https://github.com/jbogard/MediatR)\n- [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/)\n- [Npgsql EF Core Provider](https://www.npgsql.org/efcore/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickklaeren%2Faccord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrickklaeren%2Faccord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickklaeren%2Faccord/lists"}