Skip to content
Classhttpv0.11.0

Seedcord

The HTTP-interactions bot on node. start() loads handlers from config.bot.interactions.path and binds a server on port. With port: false, your own server passes requests to fetch().

Shutdown waits up to 5s for interactions that are still running.

class Seedcord extends ServerHost<"http"> implements SeedcordInstance

Member visibility

Filter class members by access level.

constructor

Constructs a new instance of the Seedcord class

Seedcord(config: HttpServerConfig)

Throws:

A SeedcordError when another Seedcord exists in this process and has not shut down.

Throws:

A SeedcordError when the running Node or Bun is older than the range in engines.

applicationId

The bot's Discord application id. Throws if you read it before the Configuration phase.

public get applicationId(): string

bus

public readonly bus: Bus

See also:Bus

port

The bound server port, set once start() is listening. Stays undefined with port: false.

public get port(): number | undefined

rest

Discord REST client built from bot.restOptions. start() sets the token.

public readonly rest: REST

username

The bot's discord username, populated by the ready fetch.

public get username(): string | undefined

[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.

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

Inherited from:ServerHost

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

fetch()

Answers one request to the interactions endpoint. Mount it in your own server when the config sets port: false.

Rejects with CoreFetchBeforeStart until start() is called. A request that arrives while start() runs waits for all of startup, the command deploy included. Answers 503 once shutdown begins or start() fails.

public async fetch(request: Request): Promise<Response>

start()

Starts the host and runs the startup tasks.

public async start(): Promise<this>