new sfx and timers

This commit is contained in:
Chris Ham
2017-08-03 07:41:30 -07:00
parent a88b397f12
commit 9a0a0dae15
7 changed files with 59 additions and 6 deletions

37
lib/timers.js Executable file
View File

@@ -0,0 +1,37 @@
const util = require('util'),
emitter = require('events').EventEmitter;
function Timers()
{
let self = this;
emitter.call(self);
self.once = (forTimestamp, eventName) => {
// figure out ms between now and scheduled time
// setTimeout for event to be fired at that time
let diff = forTimestamp - Date.now();
if (diff < 0) return;
setTimeout(() => {self.emit(eventName)}, diff);
return self;
};
self.repeat = (intervalSeconds, eventName) => {
setInterval(() => {self.emit(eventName)}, intervalSeconds*1000);
return self;
};
self.onceAndRepeat = (forTimestamp, intervalSeconds, eventName) => {
let diff = forTimestamp - Date.now();
if (diff < 0) return self;
setTimeout(() => {
self.emit(eventName);
self.repeat(intervalSeconds, eventName);
}, diff);
return self;
};
}
util.inherits(Timers, emitter);
module.exports = new Timers();

22
main.js
View File

@@ -1,8 +1,10 @@
// Import modules
const { Client } = require('discord.js');
const fs = require('fs');
const path = require('path');
const tokens = require('./tokens.json');
const { Client } = require('discord.js'),
fs = require('fs'),
path = require('path'),
moment = require('moment'),
timers = require('./lib/timers.js'),
tokens = require('./tokens.json');
// Set up Discord client
const client = new Client();
@@ -47,12 +49,10 @@ const commands = {
(function play(sfxFile) {
const dispatcher = msg.guild.voiceConnection.playFile(sfxFile, playOptions);
dispatcher.on('end', reason => {
//console.log('end: ' + reason)
playing = false;
msg.guild.voiceConnection.disconnect();
})
.on('error', error => {
//console.log('error: ' + error);
playing = false;
msg.guild.voiceConnection.disconnect();
})
@@ -67,6 +67,16 @@ const commands = {
// Wait for discord to be ready, handle messages
client.on('ready', () => {
console.log(`${tokens.botName} is connected and ready`);
let alertsChannel = client.channels.find('name', 'bot');
// Test timer
/*let timeToBlazeIt = moment().hour(16).minute(20).second(0).valueOf();
timers.onceAndRepeat(timeToBlazeIt, 86400, 'blazeit')
.on('blazeit', () => {
let emoji = client.guilds.first().emojis.find('name', 'BlazedHam');
alertsChannel.send(`You know what time it is. ${emoji}`);
});*/
}).on('message', msg => {
if (!msg.content.startsWith(tokens.prefix)) return;
let cmd = msg.content.toLowerCase().slice(tokens.prefix.length).split(' ')[0];

5
package-lock.json generated
View File

@@ -273,6 +273,11 @@
"version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM="
},
"moment": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz",
"integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8="
},
"mout": {
"version": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz",
"integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k="

View File

@@ -6,6 +6,7 @@
"dependencies": {
"discord.js": "^11.1.0",
"ffmpeg-binaries": "^3.2.2-3",
"moment": "^2.18.1",
"node-opus": "^0.2.6",
"request": "^2.81.0"
},

BIN
sfx/countdown.mp3 Executable file

Binary file not shown.

BIN
sfx/deebsfart.mp3 Executable file

Binary file not shown.

BIN
sfx/jebaited.mp3 Executable file

Binary file not shown.