diff --git a/.prettierrc b/.prettierrc index c46cffa..5887786 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,11 +1,10 @@ { "singleQuote": true, "useTabs": false, - "arrowParens": "always", "bracketSpacing": true, "parser": "typescript", "trailingComma": "none", "tabWidth": 2, - "semi": true, + "semi": false, "printWidth": 80 } \ No newline at end of file diff --git a/README.md b/README.md index c9f64cd..3af19c5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Levels - > Leveling system module. + > Leveling system plugin. ## Features * Gives a random amount of XP per message after an amount of time. @@ -10,4 +10,4 @@ N/A ## Installation -All modules should be installed in the `modules/` directory of the bot. Modules are automatically loaded and registered when the bot starts. +All plugins should be installed in the `plugins/` directory of the bot. Plugins are automatically loaded and registered when the bot starts. diff --git a/dist/index.d.ts b/dist/index.d.ts index 16ca447..7f8e3ce 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,12 +1,12 @@ import { CommandoClient } from 'discord.js-commando'; import { Config } from '@nightwatch/util'; -export declare class Module { +export declare class Plugin { static config: Config; static client: CommandoClient; static id: string; static description: string; /** - * Initializes module + * Initializes plugin * @param client * @param config */ diff --git a/dist/index.js b/dist/index.js index 3e67db5..f54b102 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,15 +1,15 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Events_1 = require("./lib/Events"); -class Module { +class Plugin { /** - * Initializes module + * Initializes plugin * @param client * @param config */ async init(client, config) { - Module.client = client; - Module.config = config; + Plugin.client = client; + Plugin.config = config; await this.registerListeners(client, config); } /** @@ -17,10 +17,10 @@ class Module { * @param client */ async registerListeners(client, config) { - client.on('message', (message) => Events_1.onMessage(message, config)); + client.on('message', message => Events_1.onMessage(message, config)); } } -Module.id = 'Levels'; -Module.description = 'A leveling system that awards XP when users send messages. Also rewards credits when a user levels up.'; -exports.Module = Module; +Plugin.id = 'Levels'; +Plugin.description = 'A leveling system that awards XP when users send messages. Also rewards credits when a user levels up.'; +exports.Plugin = Plugin; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 08b30b2..92d0662 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,yCAAwC;AAExC;IAME;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAE,MAAsB,EAAE,MAAc;QACvD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAE,MAAsB,EAAE,MAAc;QACrE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/D,CAAC;;AApBM,SAAE,GAAG,QAAQ,CAAA;AACb,kBAAW,GAAG,wGAAwG,CAAA;AAJ/H,wBAwBC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,yCAAwC;AAExC;IAME;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAE,MAAsB,EAAE,MAAc;QACvD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAE,MAAsB,EAAE,MAAc;QACrE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,kBAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7D,CAAC;;AApBM,SAAE,GAAG,QAAQ,CAAA;AACb,kBAAW,GAAG,wGAAwG,CAAA;AAJ/H,wBAwBC"} \ No newline at end of file diff --git a/dist/lib/Events.js b/dist/lib/Events.js index 79f23c9..c8cae94 100644 --- a/dist/lib/Events.js +++ b/dist/lib/Events.js @@ -8,7 +8,7 @@ exports.onMessage = async (message, config) => { if (message.author.bot || !message.content || !message.content.trim() || message.channel.type !== 'text') { return; } - const { api } = _1.Module.config; + const { api } = _1.Plugin.config; const baseRoute = `${api.address}/users`; // prevent the user from earning xp for bot commands. // handles *most* bots. @@ -19,9 +19,9 @@ exports.onMessage = async (message, config) => { const route = `${baseRoute}/${message.author.id}?token=${api.token}`; axios_1.default .get(route) - .then((res) => { + .then(res => { if (!res.data) { - util_1.MessageUtility.createUser(message.author, _1.Module.config).catch(util_1.Logger.error); + util_1.MessageUtility.createUser(message.author, _1.Plugin.config).catch(util_1.Logger.error); return; } const user = res.data; diff --git a/dist/lib/Events.js.map b/dist/lib/Events.js.map index 3071522..26d67bb 100644 --- a/dist/lib/Events.js.map +++ b/dist/lib/Events.js.map @@ -1 +1 @@ -{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../src/lib/Events.ts"],"names":[],"mappings":";;AACA,iCAA0B;AAC1B,0BAA6B;AAC7B,2CAAkE;AAElE,yBAA4B;AAEf,QAAA,SAAS,GAAG,KAAK,EAAE,OAAgB,EAAE,MAAc,EAAE,EAAE;IAClE,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;QACxG,OAAO;KACR;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,SAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO,QAAQ,CAAC;IAEzC,qDAAqD;IACrD,uBAAuB;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9E,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAChD,OAAO;KACR;IAED,MAAM,KAAK,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC;IAErE,eAAK;SACF,GAAG,CAAC,KAAK,CAAC;SACV,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACb,qBAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,SAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,aAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,OAAO;SACR;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAsB,CAAC;QAExC,SAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,aAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QAClB,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../src/lib/Events.ts"],"names":[],"mappings":";;AACA,iCAAyB;AACzB,0BAA4B;AAC5B,2CAAiE;AAEjE,yBAA2B;AAEd,QAAA,SAAS,GAAG,KAAK,EAAE,OAAgB,EAAE,MAAc,EAAE,EAAE;IAClE,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;QACxG,OAAM;KACP;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,SAAM,CAAC,MAAM,CAAA;IAC7B,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO,QAAQ,CAAA;IAExC,qDAAqD;IACrD,uBAAuB;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7E,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAChD,OAAM;KACP;IAED,MAAM,KAAK,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,KAAK,EAAE,CAAA;IAEpE,eAAK;SACF,GAAG,CAAC,KAAK,CAAC;SACV,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACb,qBAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,SAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,aAAM,CAAC,KAAK,CAAC,CAAA;YAC5E,OAAM;SACP;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAsB,CAAA;QAEvC,SAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,aAAM,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QAClB,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"} \ No newline at end of file diff --git a/dist/lib/index.js b/dist/lib/index.js index 7bc8e5f..82a7637 100644 --- a/dist/lib/index.js +++ b/dist/lib/index.js @@ -16,7 +16,7 @@ exports.giveXp = async (user, message) => { if (!user.settings.levelsEnabled) { return; } - const { api } = _1.Module.config; + const { api } = _1.Plugin.config; const baseRoute = `${api.address}/users`; const timeDiff = Date.now() - new Date(user.level.timestamp).getTime(); if (timeDiff < timeForExp) { diff --git a/dist/lib/index.js.map b/dist/lib/index.js.map index 843d64b..8f16eee 100644 --- a/dist/lib/index.js.map +++ b/dist/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json.example b/package.json.example index 7f185e8..0d2ed12 100644 --- a/package.json.example +++ b/package.json.example @@ -9,14 +9,14 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/NightwatchBot/module-levels.git" + "url": "git+https://github.com/NightwatchBot/plugin-levels.git" }, "author": "Tanner Goins", "license": "GPL-3.0", "bugs": { - "url": "https://github.com/NightwatchBot/module-levels/issues" + "url": "https://github.com/NightwatchBot/plugin-levels/issues" }, - "homepage": "https://github.com/NightwatchBot/module-levels#readme", + "homepage": "https://github.com/NightwatchBot/plugin-levels#readme", "devDependencies": { "@types/node": "^9.6.1", "@types/winston": "^2.3.9", diff --git a/src/index.ts b/src/index.ts index 1cba5da..41d45c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,20 +3,20 @@ import { CommandoClient } from 'discord.js-commando' import { Config } from '@nightwatch/util' import { onMessage } from './lib/Events' -export class Module { +export class Plugin { static config: Config static client: CommandoClient static id = 'Levels' static description = 'A leveling system that awards XP when users send messages. Also rewards credits when a user levels up.' /** - * Initializes module + * Initializes plugin * @param client * @param config */ public async init (client: CommandoClient, config: Config) { - Module.client = client - Module.config = config + Plugin.client = client + Plugin.config = config await this.registerListeners(client, config) } @@ -25,6 +25,6 @@ export class Module { * @param client */ private async registerListeners (client: CommandoClient, config: Config): Promise { - client.on('message', (message) => onMessage(message, config)) + client.on('message', message => onMessage(message, config)) } } diff --git a/src/lib/Events.ts b/src/lib/Events.ts index b7057bc..32cb180 100644 --- a/src/lib/Events.ts +++ b/src/lib/Events.ts @@ -1,40 +1,40 @@ -import { Message, TextChannel } from 'discord.js'; -import axios from 'axios'; -import { Module } from '../'; -import { Logger, MessageUtility, Config } from '@nightwatch/util'; -import { User as NightwatchUser } from '@nightwatch/db'; -import { giveXp } from './'; +import { Message, TextChannel } from 'discord.js' +import axios from 'axios' +import { Plugin } from '../' +import { Logger, MessageUtility, Config } from '@nightwatch/util' +import { User as NightwatchUser } from '@nightwatch/db' +import { giveXp } from './' export const onMessage = async (message: Message, config: Config) => { if (message.author.bot || !message.content || !message.content.trim() || message.channel.type !== 'text') { - return; + return } - const { api } = Module.config; - const baseRoute = `${api.address}/users`; + const { api } = Plugin.config + const baseRoute = `${api.address}/users` // prevent the user from earning xp for bot commands. // handles *most* bots. - const firstTwoMatch = message.content.trim().substring(0, 2).match(/[a-z]/gi); + const firstTwoMatch = message.content.trim().substring(0, 2).match(/[a-z]/gi) if (!firstTwoMatch || firstTwoMatch.length !== 2) { - return; + return } - const route = `${baseRoute}/${message.author.id}?token=${api.token}`; + const route = `${baseRoute}/${message.author.id}?token=${api.token}` axios .get(route) - .then((res) => { + .then(res => { if (!res.data) { - MessageUtility.createUser(message.author, Module.config).catch(Logger.error); - return; + MessageUtility.createUser(message.author, Plugin.config).catch(Logger.error) + return } - const user = res.data as NightwatchUser; + const user = res.data as NightwatchUser - giveXp(user, message).catch(Logger.error); + giveXp(user, message).catch(Logger.error) }) .catch((err: any) => { - Logger.error(err); - }); -}; + Logger.error(err) + }) +} diff --git a/src/lib/index.ts b/src/lib/index.ts index cbf8378..e9b161d 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,65 +1,65 @@ -import { Message, User } from 'discord.js'; -import axios from 'axios'; -import { Module } from '../'; -import { Logger } from '@nightwatch/util'; -import { User as NightwatchUser } from '@nightwatch/db'; +import { Message, User } from 'discord.js' +import axios from 'axios' +import { Plugin } from '../' +import { Logger } from '@nightwatch/util' +import { User as NightwatchUser } from '@nightwatch/db' -const timeForExp = 60 * 1000; -const minExpPerMessage = 15; -const maxExpPerMessage = 25; +const timeForExp = 60 * 1000 +const minExpPerMessage = 15 +const maxExpPerMessage = 25 const getRandomNumber = (min: number, max: number) => { - return Math.floor(Math.random() * (max - min + 1)) + min; -}; + return Math.floor(Math.random() * (max - min + 1)) + min +} const getXpForLevel = (level: number) => { - return 5 * level * level + 50 * level + 100; -}; + return 5 * level * level + 50 * level + 100 +} export const giveXp = async (user: NightwatchUser, message: Message) => { if (!user.settings.levelsEnabled) { - return; + return } - const { api } = Module.config; - const baseRoute = `${api.address}/users`; + const { api } = Plugin.config + const baseRoute = `${api.address}/users` - const timeDiff: number = Date.now() - new Date(user.level.timestamp).getTime(); + const timeDiff: number = Date.now() - new Date(user.level.timestamp).getTime() if (timeDiff < timeForExp) { - return; + return } - const entry: { xp: number; level: number } = user.level; + const entry: { xp: number; level: number } = user.level - let experience: number = entry.xp; - let level: number = entry.level; - let experienceNext: number = getXpForLevel(level); - let leveledup: boolean = false; - const expGain: number = getRandomNumber(maxExpPerMessage, minExpPerMessage); + let experience: number = entry.xp + let level: number = entry.level + let experienceNext: number = getXpForLevel(level) + let leveledup: boolean = false + const expGain: number = getRandomNumber(maxExpPerMessage, minExpPerMessage) - experience += expGain; + experience += expGain while (experience >= experienceNext) { - experience -= experienceNext; - experienceNext = getXpForLevel(level); - level++; - leveledup = true; + experience -= experienceNext + experienceNext = getXpForLevel(level) + level++ + leveledup = true } - const route = `${baseRoute}/${message.author.id}/level?token=${api.token}`; + const route = `${baseRoute}/${message.author.id}/level?token=${api.token}` if (leveledup) { - const popcornEmoji = '🍿'; - const dollarEmoji = '💵'; - const rewardAmount = getRandomNumber(45, 50) + Math.floor(level * 0.5); + const popcornEmoji = '🍿' + const dollarEmoji = '💵' + const rewardAmount = getRandomNumber(45, 50) + Math.floor(level * 0.5) message.channel.send( `**${popcornEmoji} | ${message.member .displayName} just advanced to level ${level} and earned ${dollarEmoji} ${rewardAmount} credits!**` - ); + ) - user.balance.balance += rewardAmount; - user.balance.netWorth += rewardAmount; + user.balance.balance += rewardAmount + user.balance.netWorth += rewardAmount const postData = { level: { @@ -71,10 +71,10 @@ export const giveXp = async (user: NightwatchUser, message: Message) => { netWorth: user.balance.netWorth, dateLastClaimedDailies: user.balance.dateLastClaimedDailies } - }; + } - axios.put(route, postData).catch(Logger.error); - return; + axios.put(route, postData).catch(Logger.error) + return } const postData = { @@ -82,7 +82,7 @@ export const giveXp = async (user: NightwatchUser, message: Message) => { xp: experience, level } - }; + } - axios.put(route, postData).catch(Logger.error); -}; + axios.put(route, postData).catch(Logger.error) +} diff --git a/tslint.json.example b/tslint.json.example index cdbac65..96abe7c 100644 --- a/tslint.json.example +++ b/tslint.json.example @@ -7,7 +7,6 @@ "no-unused-expression": true, "no-unused-variable": true, "no-unnecessary-qualifier": true, - "semicolon": true, "space-before-function-paren": false }, "rulesDirectory": [