github.com/andersfylling/disgord (go): Package disgord provides Go bindings for the documented Discord API, and allows for a stateful Client using the Session interface, with the option of a configurable caching system or bypass the built-in caching logic all together.  Create a Disgord client to get access to the REST API and gateway functionality. In the following example, we listen for new messages and respond with "hello".  Session interface: https://pkg.go.dev/github.com/andersfylling/disgord?tab=doc#Session  You don't have to use a callback function, channels are supported too!  Never close a channel without removing the handler from Disgord, as it will cause a panic. You can control the lifetime of a handler or injected channel by in injecting a controller: disgord.HandlerCtrl. Since you are the owner of the channel, disgord will never close it for you.  Disgord handles sharding for you automatically; when starting the bot, when discord demands you to scale up your shards (during runtime), etc. It also gives you control over the shard setup in case you want to run multiple instances of Disgord (in these cases you must handle scaling yourself as Disgord can not).  Sharding is done behind the scenes, so you do not need to worry about any settings. Disgord will simply ask Discord for the recommended amount of shards for your bot on startup. However, to set specific amount of shards you can use the `disgord.ShardConfig` to specify a range of valid shard IDs (starts from 0).  starting a bot with exactly 5 shards  Running multiple instances each with 1 shard (note each instance must use unique shard ids)  Handle scaling options yourself  You can inject your own cache implementation. By default a read only LFU implementation is used, this should be sufficient for the average user. But you can overwrite certain methods as well!  Say you dislike the implementation for MESSAGE_CREATE events, you can embed the default cache and define your own logic:  > Note: if you inject your own cache, remember that the cache is also responsible for initiating the objects. > See disgord.CacheNop  Whenever you call a REST method from the Session interface; the cache is always checked first. Upon a cache hit, no REST request is executed and you get the data from the cache in return. However, if this is problematic for you or there exist a bug which gives you bad/outdated data, you can bypass it by using Disgord flags.  In addition to disgord.IgnoreCache, as shown above, you can pass in other flags such as: disgord.SortByID, disgord.OrderAscending, etc. You can find these flags in the flag.go file.  `disgord_diagnosews` will store all the incoming and outgoing JSON data as files in the directory "diagnose-report/packets". The file format is as follows: unix_clientType_direction_shardID_operationCode_sequenceNumber[_eventName].json
Keywords: api|bindings|bot|discord|discord-api|disgord|go|golang|golang-bindings|golang-module|voice