{"id":13409806,"url":"https://github.com/Remora/Remora.Discord","last_synced_at":"2025-03-14T15:30:53.449Z","repository":{"id":37006140,"uuid":"267064200","full_name":"Remora/Remora.Discord","owner":"Remora","description":"A data-oriented C# Discord library, focused on high-performance concurrency and robust design.","archived":false,"fork":false,"pushed_at":"2025-03-01T10:35:16.000Z","size":80586,"stargazers_count":249,"open_issues_count":22,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-10T18:10:58.344Z","etag":null,"topics":["asynchronous","discord","discord-api","discord-bot","rest","rest-api"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Remora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-26T14:23:11.000Z","updated_at":"2025-03-01T10:27:07.000Z","dependencies_parsed_at":"2024-03-31T13:32:02.196Z","dependency_job_id":"2521403f-7973-4c41-b247-535fce15c64f","html_url":"https://github.com/Remora/Remora.Discord","commit_stats":{"total_commits":2639,"total_committers":44,"mean_commits":59.97727272727273,"dds":0.2769988632057597,"last_synced_commit":"9eac98d4ee9723c4ab447bd802b065e9b72f21a9"},"previous_names":["nihlus/remora.discord"],"tags_count":189,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remora%2FRemora.Discord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remora%2FRemora.Discord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remora%2FRemora.Discord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Remora%2FRemora.Discord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Remora","download_url":"https://codeload.github.com/Remora/Remora.Discord/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243600528,"owners_count":20317291,"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":["asynchronous","discord","discord-api","discord-bot","rest","rest-api"],"created_at":"2024-07-30T20:01:03.466Z","updated_at":"2025-03-14T15:30:52.377Z","avatar_url":"https://github.com/Remora.png","language":"C#","funding_links":[],"categories":["API Libraries","Libraries"],"sub_categories":["C#"],"readme":"Remora.Discord\n==============\n\nRemora.Discord is a C# library for interfacing with the Discord API. It is built\nto fulfill a need for robust, feature-complete, highly available and concurrent \nbots.\n\nWant to chat with users and developers? Come join us!\n\n[![Discord Server][5]][4] \n\n# Table of Contents\n1. [Features](#1-features)\n2. [Goals](#2-goals)\n    1. [Correctness](#21-correctness)\n    2. [Robustness](#22-robustness)\n    3. [True Asynchronicity and Concurrency](#23-true-asynchronicity-and-concurrency)\n3. [Status](#3-status)\n    1. [Gateway](#31-gateway)\n    2. [REST](#32-rest)\n4. [Installation](#4-installation)\n5. [Usage](#5-usage)\n6. [Contributing](.github/CONTRIBUTING.md)\n\n## 1. Features\n  * Extensive API coverage - does anything and everything you need\n  * Modern and active - uses contemporary technologies and usage patterns\n  * Fully asynchronous - do many things at once at scale\n  * Modular - swap parts of the library with your own implementations at will\n  * Integrated - slash commands, traditional interfaces, or stateless bots\n\n## 2. Goals\nRemora.Discord originates from the original author's frustration with many \ninconsistencies in various APIs in the C#/Discord ecosystem, both in relation to\nthe Discord API itself and the language usage within existing solutions.\n\nTherefore, Remora.Discord defines the following three goals that guides its \ndevelopment. These are shorter summaries - to read the full goal definitions and\nsee examples, please refer to the [Contributing Guidelines][2].\n\n### 2.1 Correctness\nCorrectness, in the context of Remora.Discord, means that the API available to \nthe end user should as faithfully and accurately represent the actual reality of\ndata presented to or from an API; that is, no data or structure of data should \nmeaningfully change between the library receiving it and the user accessing it.\n\n### 2.2 Robustness\nRobustness refers to a focus on never allowing problems originating from user \ndata or real-life runtime conditions to bring down or otherwise corrupt the end \nuser's application. The end user should be confident that, should an error \narise, they will be aware of the fault potential before even compiling the \napplication.\n\n### 2.3 True Asynchronicity and Concurrency\nRemora.Discord aims to be truly asynchronous from the ground up, respecting and\nutilizing established best practices for C# and the TPL. Furthermore, it aims to\nbe concurrent, allowing end users to react to and perform actions upon many \nincoming events at once.\n\n## 3. Status\nRemora.Discord is currently fully usable, and has been released for public \nconsumption.\n\n### 3.1 Gateway\nThe Discord Gateway API (v10) is fully implemented. The gateway client can \nconnect, heartbeat, reconnect, resume, receive events, and send commands.\n\n### 3.2 REST\nThe Discord REST API (v10) is fully implemented.\n\n### 3.3 Voice\nThe Discord Voice API is not implemented. If you'd like to contribute to the \nlibrary, this would be an excellent start.\n\n## 4. Installation\nRemora.Discord's primary distribution format is via [nuget][3] - get it there!\n\nIf you wish to use or develop the library further, you will need to compile it \nfrom source.\n\n```bash\ngit clone git@github.com:Remora/Remora.Discord.git\ncd Remora.Discord\ndotnet build\ndotnet pack -c Release\n```\n\n## 5. Usage\nUp-to-date documentation for the API, as well as a quickstart guide, is \navailable online at [the repository pages][1].\n\nEach package has its own README with more detailed information regarding its \npurpose and use. If you want to know more about each one of these, please refer\nto the list below. It's roughly organized in order of importance to end users, \nbut feel free to explore.\n\n  * [Remora.Discord](Remora.Discord/README.md)\n    * [Remora.Discord.Extensions](Remora.Discord.Extensions/README.md)\n    * [Remora.Discord.Hosting](Remora.Discord.Hosting/README.md)\n    * [Remora.Discord.Interactivity](Remora.Discord.Interactivity/README.md)\n    * [Remora.Discord.Pagination](Remora.Discord.Pagination/README.md)\n  * [Remora.Discord.Commands](Remora.Discord.Commands/README.md)\n  * [Remora.Discord.API](Backend/Remora.Discord.API/README.md)\n    * [Remora.Discord.API.Abstractions](Backend/Remora.Discord.API.Abstractions/README.md)\n  * [Remora.Discord.Rest](Backend/Remora.Discord.Rest/README.md)\n  * [Remora.Discord.Gateway](Backend/Remora.Discord.Gateway/README.md)\n  * [Remora.Discord.Caching.Abstractions](Backend/Remora.Discord.Caching.Abstractions/README.md)\n    * [Remora.Discord.Caching](Backend/Remora.Discord.Caching/README.md)\n      * [Remora.Discord.Caching.Redis](Backend/Remora.Discord.Caching.Redis/README.md)\n  * [Remora.Discord.Unstable](Backend/Remora.Discord.Unstable/README.md)\n\nIf you want to get started quickly, please refer to the [Samples][7] for \ncommunity-created example bots.\n\n### 5.1 Versioning\nA note on versioning - Remora.Discord uses SEMVER 2.0.0, which, in short, means\n\nGiven a version number MAJOR.MINOR.PATCH, increment the:\n\n  1. MAJOR version when you make incompatible API changes,\n  2. MINOR version when you add functionality in a backwards compatible manner,\n     and\n  3. PATCH version when you make backwards compatible bug fixes.\n\nDue to the rapidly- and often-changing nature of Discord's API, this means that \nchanges to the MAJOR component of the version in components of the library may\nchange almost every new release. Typically, new functionality in Discord's API\nmeans that new fields are added, types of fields change, or parameters sent to \nendpoints change.\n\nGenerally, these changes only affect the API and API.Abstractions packages - \nthese will often increment their MAJOR versions. Dependant packages - such as \nGateway or Rest - will update together with these packages, but unless their \npublic API changes as a result, it will be considered a PATCH upgrade.\n\nThe consequences of this is that you *may* see source-level breakages when \nupgrading from one minor version to the next. While undesirable, it is an effect\nof Discord's uneven and inaccurate update cycle. Because of the way C# handles\ndependencies, however, it's unlikely that this would affect anything outside of \nnormal development - as such, it's been deemed an acceptable degradation.\n\n### 5.2 Releases\nRemora.Discord does not follow a set release cycle, and releases new versions \non a rolling basis as new features of the Discord API are implemented or \ndocumented.\n\nAs a bot developer, you should check in every now and then to see what's \nchanged - changelogs are released along with tags here on Github, as well as in\nthe individual package descriptions.\n\nWhenever a new set of packages are released, the commit the releases were built \nfrom is tagged with the year and an incremental release number - for example,\n`2021.1`.\n\n#### 5.2.1 Bleeding Edge Builds\nWhenever a new push to `master` is made, a new set of packages based on the \nlatest commit will be published to GitHub Packages.\n\nThe URL of the NuGet source is `https://nuget.pkg.github.com/Remora/index.json`.\nAs the NuGet source requires authentication, follow GitHub's instructions: [here][9]\n\n## 7. Licensing\nRemora.Discord is released under the Lesser GNU Public License, version 3.0 or \nlater. \n\nThe code samples (both under the [Samples](Samples) directory and any snippets \nin documentation, manuals, or other educational material) is licensed under the \nMIT license.\n\n## 8. Contributing\nSee [Contributing][2].\n\n## Thanks\nIcon by [Twemoji][6], licensed under CC-BY 4.0.\n\n[1]: https://remora.github.io/Remora.Discord/\n[2]: .github/CONTRIBUTING.md\n[3]: https://www.nuget.org/packages/Remora.Discord/\n[4]: https://discord.gg/tRJbg8HNdt\n[5]: https://img.shields.io/static/v1?label=Chat\u0026message=on%20Discord\u0026color=7289da\u0026logo=discord\n[6]: https://twemoji.twitter.com/\n[7]: https://github.com/Remora/Remora.Discord/tree/master/Samples\n[8]: https://github.com/Remora?tab=packages\u0026repo_name=Remora.Discord\n[9]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry#authenticating-to-github-packages\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRemora%2FRemora.Discord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRemora%2FRemora.Discord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRemora%2FRemora.Discord/lists"}