Skip to content
Classcore/nodev0.11.0

ServerHost

Base class for a transport Seedcord class that runs as a long-lived node or bun process.

abstract class ServerHost<
    BotT extends Transport
> extends PluginHost<BotT, "server">

Member visibility

Filter class members by access level.

Showing members with Protected visibility and higher.

shutdown

Add a task that runs while the bot shuts down.

public readonly shutdown: Pick<CoordinatedShutdown, 'addTask'>

startup

Add a task that runs while the bot starts.

public readonly startup: Pick<CoordinatedStartup, 'addTask'>

[Symbol.asyncDispose]()

Runs the coordinated shutdown without calling process.exit. A new Seedcord can be constructed afterwards. await using calls this when its scope ends.

public async [Symbol.asyncDispose](): Promise<void>

attach()

Attaches a plugin under key. Read the instance back as core[key]. seedcord codegen writes the Core augmentation that types it there.

Put one dot in the key to nest the plugin under a group. 'services.users' reads back as core.services.users. Each name holds one plugin or one group.

Startup runs each plugin's init() in attach order within its phase. A node bot starts in start(). An edge bot starts on its first request.

Attaching a plugin whose transport or runtime differs from this host fails to compile. Your constructor takes CoreBase as its first parameter (you don't need to pass it though). A narrower one fails to compile here.

attach<Key, Ctor>(
    this: this,
    key: AttachKeyAssert<Key, this>,
    Plugin: AttachableCtor<Ctor, BotT, BotRt>,
    args: PluginArgs<Ctor>
): this & Attached<Key, InstanceType<Ctor>>
Parameter: key

Also the channel the plugin logs on, dots included.

Parameter: args

Whatever your constructor takes after the host.

Throws:

A SeedcordError when you attach after the bot has started.

Throws:

A SeedcordTypeError when key is taken, reserved, or malformed.

Throws:

A SeedcordTypeError when the plugin extends Plugin from another copy of @seedcord/core.

Throws:

A SeedcordTypeError when the plugin's transport or runtime differs from this host and the types were bypassed.

Inherited from:PluginHost