naoko-leveling
Version:
A standard leveling system forgescript extension for discord bot
47 lines (40 loc) • 1.77 kB
text/typescript
import { Context, ForgeClient, ForgeExtension, FunctionManager } from "forgescript";
import { MemoryDriver, IDriver, QuickDB } from "quick.db";
import { IFormulaMethods, IFormulaOptions, Standard } from "../formulas";
import path from "path";
import { StatRegion } from "../formulas/constants";
import NaokoStat from "./NaokoStat";
class NaokoLeveling extends ForgeExtension {
name: string = 'NaokoLeveling';
description: string = 'A standard leveling system for community use';
version: string = 'v0.0.1';
public db: QuickDB;
public formula: IFormulaMethods;
public formulaOptions: IFormulaOptions = {
constant: 0.3,
power: 2
};
public prefixId = 'naokolv';
public region = StatRegion.Global;
public constructor(driver: IDriver = new MemoryDriver(), formula: IFormulaMethods = Standard, region: StatRegion = StatRegion.Global) {
super();
this.db = new QuickDB({ driver: driver });
this.formula = formula;
this.region = region;
}
public init(client: ForgeClient): void {
client['nlv'] = this;
FunctionManager.load(path.join(__dirname, '..', 'functions'));
}
public checkRegion(ctx: Context, region: StatRegion, regionId: string) {
switch (region) {
case StatRegion.Global: return true;
case StatRegion.Guild: return ctx.client.guilds.cache.has(regionId);
case StatRegion.TextChannel: return ctx.guild.channels.cache.has(regionId);
case StatRegion.ThreadChannel: return ctx.guild.channels.cache.get(regionId)!.isThread();
case StatRegion.Custom: return true;
default: return false;
}
}
}
export = NaokoLeveling;