UNPKG

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
/// <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; }