willow-plugin-exp
Version:
A plugin for willow that allows users to collect exp, gain levels, and be assigned roles.
52 lines (51 loc) • 2.36 kB
TypeScript
/// <reference types="command-line-args" />
import 'reflect-metadata';
import { CommandLineOptions } from 'command-line-args';
import * as Discord from 'discord.js';
import { BotORMOptions, BotPlugin } from 'willow-contracts';
import { PluginExpUser, UserExp, UserLevel, UserRank } from 'willow-models';
import { Repository } from 'typeorm';
export declare const commandOptions: {
name: string;
alias: string;
type: BooleanConstructor;
}[];
export declare enum CommandType {
Quote = 0,
Random = 1,
}
export default class PsyduckExampleOrm implements BotPlugin {
users: Repository<PluginExpUser>;
levels: Repository<UserLevel>;
ranks: Repository<UserRank>;
exps: Repository<UserExp>;
connectionOptions: BotORMOptions;
announceLevelUp: {
announceChannel: string;
} | boolean;
minExp: number;
maxExp: number;
constructor(options: BotORMOptions, announceLevelUp?: {
announceChannel: string;
} | boolean, minExp?: number, maxExp?: number);
/**
* This method is to be called after instantiation to connect to the data store. This is intentional to allow for unit testing methods without requiring a connection.
*/
connect(): void;
buildLevels(): Promise<void>;
/**
* This event is emitted from Psyduck when a message is recieved in a discord channel. From there you may do as you with with it in your plugin.
*/
onMessage(message: Discord.Message): void;
getUser(userId: string): Promise<PluginExpUser | undefined>;
createUser(guildId: string, serverName: string, guildAvatarUrl: string, userId: string, userName: string, avatarUrl: string): PluginExpUser;
explainLevel(discord: Discord.Message, channelName: string): Promise<void>;
buildExp(channel: string): UserExp;
gainExp(discord: Discord.Message, userId: string, channel: string): Promise<void>;
checkGainLevel(discord: Discord.Message, user: PluginExpUser): Promise<void>;
gainLevel(discord: Discord.Message, user: PluginExpUser): Promise<void>;
assignRole(discord: Discord.Message, userId: string, roleName: string): Promise<void>;
parseParameters(messageContent: string): string[];
hydrateOptions(parameters: string[]): CommandLineOptions;
extractUserId(userId: string): string | undefined;
}