From 14d5bdb183356c2dbb379cacd02bc5983b54ef7d Mon Sep 17 00:00:00 2001 From: Flummi Date: Sat, 3 Mar 2018 02:40:07 +0100 Subject: [PATCH] timer, wip --- package.json | 1 + src/inc/trigger/index.mjs | 3 ++- src/inc/trigger/lib/timer.mjs | 32 ++++++++++++++++++++++++++++++++ src/inc/trigger/timer.mjs | 19 +++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/inc/trigger/lib/timer.mjs create mode 100644 src/inc/trigger/timer.mjs diff --git a/package.json b/package.json index cfe2822..7d055d2 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dependencies": { "discord.js": "^11.3.0", "jsdom": "^11.4.0", + "long-timeout": "^0.1.1", "pg-promise": "^7.3.2", "request": "^2.83.0", "request-promise": "^4.2.2", diff --git a/src/inc/trigger/index.mjs b/src/inc/trigger/index.mjs index 19a65bb..dc90733 100644 --- a/src/inc/trigger/index.mjs +++ b/src/inc/trigger/index.mjs @@ -14,6 +14,7 @@ import quotes from "./quotes"; import rape from "./rape"; import sandbox from "./sandbox"; import soundcloud from "./soundcloud"; +import timer from "./timer"; import urban from "./urban"; import nxy from "./useless_nxy"; import uwe from "./useless_uwe"; @@ -23,5 +24,5 @@ export default [ cfg, chatbot, coins, cookie, core, debug, drugs, help, kernel, lastfm, mcmaniac, parser, quotes, rape, sandbox, soundcloud, - urban, nxy, uwe, wttr + timer, urban, nxy, uwe, wttr ]; \ No newline at end of file diff --git a/src/inc/trigger/lib/timer.mjs b/src/inc/trigger/lib/timer.mjs new file mode 100644 index 0000000..08a57e3 --- /dev/null +++ b/src/inc/trigger/lib/timer.mjs @@ -0,0 +1,32 @@ +import lt from "long-timeout"; + +export default new class timer { + constructor() { + this.regex = /\d+[smhdwy]|mon/; + this.calc = { + y: val => val * 365 * 24 * 60 * 60, // years + mon: val => val * 30 * 24 * 60 * 60, // months + w: val => val * 7 * 24 * 60 * 60, // weeks + d: val => val * 24 * 60 * 60, // days + h: val => val * 60 * 60, // hours + m: val => val * 60, // minutes + s: val => val // seconds + }; + } + add(time, fn, begin = ~~(Date.now()/1000)) { + if(this.regex.test(time)) { + let seconds = 0; + time.match(/\d+(mon|[smhdwy])/g).forEach(t => { + const [,val,mod] = t.match(/(\d+)(mon|[smhdwy])/); + seconds += parseInt(this.calc[mod](val)); + }) + const rest = seconds - (begin - ~~(Date.now() / 1000)); + lt.setTimeout(() => { + fn(); + }, rest * 1000); + return `timer eingetragen (${rest}s)`; + } + else + return "nope"; + } +} diff --git a/src/inc/trigger/timer.mjs b/src/inc/trigger/timer.mjs new file mode 100644 index 0000000..d5e194e --- /dev/null +++ b/src/inc/trigger/timer.mjs @@ -0,0 +1,19 @@ +import timer from "./lib/timer"; + +export default bot => { + bot._trigger.set("timer", new bot.trigger({ + call: /^(\.|\/)timer .*/i, + set: "nxy", + help: { + text: "(WIP) Sets a timer, delay can be: s, m, h, d, w, mon, y", + usage: "[b].timer[/b] [i][/i] [i][/i]..." + }, + f: e => { + //e.reply( + timer.add(e.args.shift(), () => { + e.reply(e.args.join(" ")); + }); + //); + } + })); +}; \ No newline at end of file