new sfx and timers
This commit is contained in:
37
lib/timers.js
Executable file
37
lib/timers.js
Executable 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
22
main.js
@@ -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
5
package-lock.json
generated
@@ -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="
|
||||
|
||||
@@ -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
BIN
sfx/countdown.mp3
Executable file
Binary file not shown.
BIN
sfx/deebsfart.mp3
Executable file
BIN
sfx/deebsfart.mp3
Executable file
Binary file not shown.
BIN
sfx/jebaited.mp3
Executable file
BIN
sfx/jebaited.mp3
Executable file
Binary file not shown.
Reference in New Issue
Block a user