Open BartArys opened 3 years ago
I'll actually run Kord on a 4k guilds bot at some point so what about adding both ways
I'll actually run Kord on a 4k guilds bot at some point so what about adding both ways
This doesn't intend remove the behavior, it merely doesn't make it the default:
and allow them to call the suspending function manually.
conceptually that'd translate itself to something like this:
val kord = Kord(token) {
shards = fetchRecommendedShards()
}
It should only be a bit of extra work for those who need it, and a decent optimization for those who don't.
The builder also calls DataCache.registerKordData()
and DataCache.createView()
the latter one is actually suspending for no reason but the first one is
Relates to #807, #779
Kord's builder DSL suspends to figure out the recommended amount of shards from Discord's REST API. When it was originally introduced, it was motivated as a way to automatically scale shards without input from the user. The truth is however, that most bot authors won't be running Kord bots on 1000+ guilds. Most will run a select few dedicated guilds instead, and those running on more won't be using a single kord instance for all their bots anyway.
As such, we should transform the builder to no longer suspend by default and assume a default shard config (1 shard, index 0) that can modified by the user, and allow them to call the suspending function manually. This makes building Kord nicer for third APIs and has the added bonus of skipping an HTTP request, speeding up the startup.