DiscordGo is a Go package that provides low-level bindings to the Discord API. The package implements nearly complete support for Discord API endpoints, the websocket interface, and voice functionality, allowing developers to build Discord bots and integrations in Go.
DiscordGo solves the problem of programmatically interacting with Discord by offering direct bindings to the Discord API. It handles the complexity of websocket connections, event callbacks, and voice streaming, allowing developers to construct a Discord client and register handlers for events without managing low-level protocol details themselves. The package is designed as a low-level direct mapping of the Discord API rather than a high-level abstraction.
Developers building Discord bots in Go should choose DiscordGo if they want a straightforward binding to Discord's API endpoints and events. The project suits applications that need reliable Discord integration with access to the full range of Discord functionality. The README notes that a feature comparison chart exists showing how DiscordGo relates to other Discord API libraries across different languages, though it does not detail specific comparisons. The project provides supplementary packages like dgVoice for additional voice helper functions and dca as an experimental tool for audio encoding.
The project maintains an active test bot in Discord servers to support development. Documentation is provided through Go reference pages generated from the codebase itself, with hand-crafted documentation noted as coming eventually. The README explicitly states that both the library and Discord API are unfinished, indicating that major changes may occur in the future. Examples and community projects using DiscordGo are tracked in a curated list, and the project maintains a troubleshooting wiki section for common issues.