Skip to content
Classcore/pluginv0.12.0

Plugin

Base class for a seedcord plugin. Extend it and implement init(). this.core is the running bot.

Take the host as your constructor's first parameter and pass it to super(). Add your own parameters after it. attach() types them at the call site.

A plugin that narrows transport or runtime in Opts passes the same values to super(). attach() throws when either one differs from the bot's.

abstract class Plugin<
    Opts extends PluginOptions = {},
    TCore extends CoreBase = CoreBase,
    Fixed extends ScopeAxis = never
>
    implements Initializeable, HmrAware

Member visibility

Filter class members by access level.

constructor

Constructs a new instance of the Plugin class

Plugin(
    host: CoreBase,
    [spec],
    input: PluginSpecArgs<Opts, Fixed>
)

Showing members with Protected visibility and higher.

Opts

Where this plugin may attach.

Opts extends PluginOptions = {}

TCore

The Core each transport binds this.core to.

TCore extends CoreBase = CoreBase

Fixed

The transport and runtime values a transport's own Plugin base sets. Leave it out.

Fixed extends ScopeAxis = never

core

The host, typed to the transport whose Plugin base this class extends.

protected core: TCore

kv

This plugin's records in the bot's config.kv, stored under its attach key. Two attachments of one plugin class each get their own records. Renaming the attach key leaves the records under the old key behind.

protected kv: Kv

Throws:

  • A SeedcordTypeError when something built the plugin with new outside attach().

logger

Logs under the plugin's class name, on the channel its attach key sets.

protected readonly logger: Logger

codegen()

Returns data that seedcord codegen writes into the bot's seedcord-gen.ts as a type. Read it back with Generated<typeof YourPlugin>. Return plain data, or classes and objects that a project file or your plugin's package exports. The class needs a static readonly id.

seedcord codegen calls this without running init(). Read only what the constructor stored and the bot's files.

public async codegen?(): Promise<unknown>

dispose()

Runs during teardown, in ShutdownPhase.Disconnect by default. seedcord skips it when init() has thrown.

When init() outlasts its timeout, seedcord calls this once that init() resolves, outside any shutdown phase. The process must still be alive for that call to happen.

public dispose?(): Promisable<void>

ready()

Runs in the Ready phase, after every attached plugin's init() has resolved. The other Ready tasks run alongside it, including the http server binding its port.

Override it when your work needs a logged-in client or a resolved application id.

public ready?(): Promisable<void>

registerCriticalFiles()

Registers critical file patterns that should trigger a full restart when changed in Dev HMR.

protected registerCriticalFiles(
    patterns: string[]
): void
Parameter: patterns

Glob patterns. A relative one resolves against root from seedcord.config.ts.

rejectOptions()

Rejects the options this plugin got.

protected rejectOptions(reason: string): never
Parameter: reason

Why the options are invalid.

Throws:

A SeedcordTypeError every time, with the plugin class name and reason in its message.