import { BitFieldResolvable, GatewayIntentsString } from "discord.js"; import { PrismaClient } from "@prisma/client"; import { BaseBotCache, BaseEntry, BaseGuildCache, iBaseBotCache, iBaseGuildCache } from "./"; export default abstract class NovaBot
, BC extends BaseBotCache
> {
/**
* The display name of the bot.
* This will be logged when the bot is started
*
* @example "SounDroid#1491"
*/
abstract name: string;
/**
* The icon of the bot.
* This will be shown in the help command of the bot
*
* @example "https://cdn.discordapp.com/avatars/899858077027811379/56e8665909db40439b09e13627970b62.png?size=128"
*/
abstract icon: string;
/**
* The directory where Nova will look for button, command, event and selectMenu interactions.
* Any folder called `/buttons`, `/commands`, `/events`, `/selectMenus` or `/modals` within this directory will be added to the bot.
*
* @example path.join(__dirname, "interactions")
*/
abstract directory: string;
/**
* The client intents that the bot will use.
*
* {@link https://discordjs.guide/popular-topics/intents.html#privileged-intents}
*/
abstract intents: BitFieldResolvable ;
/**
* The BotCache class that is used by your bot
*/
abstract BotCache: iBaseBotCache ;
/**
* A logger that can be used by Nova to log events to the console.
*
* @example
* import Tracer from "tracer"
*
* class MyBot extends NovaBot {
* // ...
* logger = Tracer.console({})
* // ...
* }
*/
abstract logger: {
discord: (...args: any[]) => void;
info: (...args: any[]) => void;
warn: (...args: any[]) => void;
error: (...args: any[]) => void;
};
/**
* Instance of the prisma database client
*/
abstract prisma: P;
/**
* This method will get called once your bot receives the "ready" event from Discord
*
* @param botCache The bot cache that is used by your bot
*/
onSetup(botCache: BC): void;
/**
* Method to start the bot
*/
start(): void;
}