// Galactic - Discord moderation bot
// Copyright (C) 2024 Navy.gif
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
import { WriteOptions, LoggerClient } from '@navy.gif/logger';
import { ClientOptions } from './Client.ts';
export type CommandOption = {
[key: string]: unknown
}
export type Command = {
name: string,
options: {
[key: string]: CommandOption
}
}
export type CommandsDef = {
type: 'global' | 'guild',
commands: Command[],
guilds: string[],
clientId: string
}
export type IPCMessage = {
id?: string,
_start?: ClientOptions,
_ready?: boolean,
_disconnect?: boolean,
_reconnecting?: boolean,
_fetchProp?: string,
_sFetchProp?: string,
_sFetchPropShard?: number,
_sEval?: string,
_sEvalShard?: number,
_eval?: string,
_result?: unknown,
_error?: Error,
_sRespawnAll?: {
shardDelay: number,
respawnDelay: number,
timeout: number
},
_mEval?: boolean,
_mEvalResult?: boolean
_logger?: boolean,
_api?: boolean,
_commands?: CommandsDef,
_shutdown?: boolean,
_fatal?: boolean,
success?: boolean
script?: string,
debug?: boolean,
type?: string,
data?: unknown,
shards?: number[]
}
export type PlainError = {
name: string;
message: string;
stack?: string;
}
export type EnvObject = {
[key: string]: unknown,
SHARDING_MANAGER: boolean
SHARD_ID: number
SHARD_COUNT: number
DISCORD_TOKEN: string | null
}
export type Loggable = {
createLogger: (comp: object, options?: WriteOptions) => LoggerClient
} & T;
export type Hookable = {
ready: boolean
} & T