kord icon indicating copy to clipboard operation
kord copied to clipboard

Make Kord builder no longer suspend

Open BartArys opened this issue 4 years ago • 4 comments

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.

BartArys avatar Dec 19 '20 09:12 BartArys

I'll actually run Kord on a 4k guilds bot at some point so what about adding both ways

DRSchlaubi avatar Dec 27 '20 17:12 DRSchlaubi

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.

BartArys avatar Dec 27 '20 18:12 BartArys

The builder also calls DataCache.registerKordData() and DataCache.createView() the latter one is actually suspending for no reason but the first one is

DRSchlaubi avatar Mar 24 '21 21:03 DRSchlaubi

Relates to #807, #779

DRSchlaubi avatar Jun 15 '23 19:06 DRSchlaubi