From d830c7b104aed57351f0badf70feb21c6927e573 Mon Sep 17 00:00:00 2001 From: Flummi Date: Mon, 5 Mar 2018 07:52:27 +0100 Subject: [PATCH] reject negative numbers :^) --- src/inc/trigger/lib/timer.mjs | 33 +++++++++++++++------------------ src/inc/trigger/timer.mjs | 6 +++++- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/inc/trigger/lib/timer.mjs b/src/inc/trigger/lib/timer.mjs index 709ea95..088b771 100644 --- a/src/inc/trigger/lib/timer.mjs +++ b/src/inc/trigger/lib/timer.mjs @@ -2,17 +2,9 @@ import lt from "long-timeout"; import sql from "../../../inc/sql"; import { clients } from "../../wrapper"; -/*setTimeout(() => { - clients.forEach(client => { - if(client.type === "discord") { - client.client.sendmsg("", "417396055592665098", "TEST"); - } - }); -}, 2000);*/ - export default new class timer { constructor() { - this.regex = /\d+[smhdwy]|mon/; + this.regex = /(\d+)(mon|[smhdwy])/; this.calc = { y: val => val * 365 * 24 * 60 * 60, // years mon: val => val * 30 * 24 * 60 * 60, // months @@ -22,6 +14,7 @@ export default new class timer { m: val => val * 60, // minutes s: val => val // seconds }; + this._timers = new Set(); setTimeout(() => { this.getTimers(); }, 1000); } add(time, fn, begin = ~~(Date.now()/1000)) { @@ -31,12 +24,17 @@ export default new class timer { 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); - resolve(rest); + }); + if(seconds > 0) { + const rest = seconds - (~~(Date.now() / 1000) - begin); + lt.setTimeout(() => { + fn(); + }, rest * 1000); + this._timers.add(rest); + resolve(rest); + } + else + reject(); } else reject(); @@ -54,9 +52,8 @@ export default new class timer { && client.client.network.toLowerCase() === r.target.network.toLowerCase()) { this.add(r.delay, () => { - client.client.sendmsg("normal", r.target.channel, r.message); - //sql.any("delete from nxy_timers where id = $1", [ r.id ]); - }, r.created); + client.client.sendmsg("normal", r.target.channel, client.client.format(`[b]${r.target.nick}[/b]: ${r.message} [i](${r.delay})[/i]`)); + }, r.created).catch(err => {}); } }); }); diff --git a/src/inc/trigger/timer.mjs b/src/inc/trigger/timer.mjs index 8feebde..58873e7 100644 --- a/src/inc/trigger/timer.mjs +++ b/src/inc/trigger/timer.mjs @@ -12,14 +12,18 @@ export default bot => { f: e => { const t = e.args.shift(); const msg = e.args.join(" "); + if(t === "debug" && e.user.level.level >= 100) + return e.reply( JSON.stringify([...timer._timers]) ); + timer.add(t, () => { - e.reply(msg); + e.reply(`[b]${e.user.nick}[/b]: ${msg} [i](${t})[/i]`); }).then(seconds => { sql.any( "insert into nxy_timers (mask, target, message, delay, created) values ($1, $2, $3, $4, $5)", [ e.user.prefix, JSON.stringify({ + nick: e.user.nick, type: e.type, network: e.network, channel: e.channelid