diff --git a/index.js b/index.js index 62363f2..41a2538 100644 --- a/index.js +++ b/index.js @@ -175,52 +175,106 @@ const botSay = (where, what, dontDisplayRadio, forceSend) => { const actions = (where, message, from) => { const exploded = message.split(' ') + let allowedCmds = ['ALL'] + if (process.env.AVAILABLE_CMD) { + allowedCmds = process.env.AVAILABLE_CMD.split(',') + } + if (where.indexOf('#') === 0 && process.env[`AVAILABLE_CMD_${where.replace('#', '')}`]) { + allowedCmds = process.env[`AVAILABLE_CMD_${where.replace('#', '')}`].split(',') + } + + const unknowmCmd = () => { + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!help') !== -1) { + botSay(where, 'Commande inconnue, tape !help si tu es perdu', false, true) + } else { + botSay(where, 'Commande inconnue...', false, true) + } + } + // Le message publié est pour le bot if (exploded[0].indexOf(process.env.IRC_NICKNAME) === 0) { switch (exploded[1]) { case '!artist': + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!artist') !== -1) { + artistSong.action(exploded[1].replace('!', ''), botSay, from, currentSong, exploded) + } else { + unknowmCmd() + } + break case '!song': - artistSong.action(exploded[1].replace('!', ''), botSay, from, currentSong, exploded) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!song') !== -1) { + artistSong.action(exploded[1].replace('!', ''), botSay, from, currentSong, exploded) + } else { + unknowmCmd() + } break case '!help': - Help.show(botSay, where, exploded) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!help') !== -1) { + Help.show(botSay, where, exploded, allowedCmds) + } else { + unknowmCmd() + } break case '!when': - when.action(botSay, where, exploded) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!when') !== -1) { + when.action(botSay, where, exploded) + } else { + unknowmCmd() + } break case '!stats': - stats.action(botSay, where, exploded) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stats') !== -1) { + stats.action(botSay, where, exploded) + } else { + unknowmCmd() + } break case '!list': - list.action(botSay, where, exploded) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!list') !== -1) { + list.action(botSay, where, exploded) + } else { + unknowmCmd() + } break case '!notifications': - preferences.notifications(botSay, where, from, exploded) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!notifications') !== -1) { + preferences.notifications(botSay, where, from, exploded) + } else { + unknowmCmd() + } break case '!stream': - botSay(where, process.env.PUBLIC_RADIO_STREAM) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stream') !== -1) { + botSay(where, process.env.PUBLIC_RADIO_STREAM) + } else { + unknowmCmd() + } break case '!mute': - if (exploded[2] && ['on', 'off', 'state'].indexOf(exploded[2]) !== -1) { - switch (exploded[2]) { - case 'on': - isMute = true - botSay(where, "Pff ! c'est toujours pareil ici :'(", false, true) - break - case 'off': - isMute = false - botSay(where, "Merci ! j'avais tellement de chose à te dire...", false, true) - break - default: - botSay(where, isMute ? 'Je ne dirais rien !' : "T'inquiète ! tu vas l'avoir ta notif !", false, true) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!mute') !== -1) { + if (exploded[2] && ['on', 'off', 'state'].indexOf(exploded[2]) !== -1) { + switch (exploded[2]) { + case 'on': + isMute = true + botSay(where, "Pff ! c'est toujours pareil ici :'(", false, true) + break + case 'off': + isMute = false + botSay(where, "Merci ! j'avais tellement de chose à te dire...", false, true) + break + default: + botSay(where, isMute ? 'Je ne dirais rien !' : "T'inquiète ! tu vas l'avoir ta notif !", false, true) + } + } else { + botSay(where, '!help mute', false, true) } } else { - botSay(where, '!help mute', false, true) + unknowmCmd() } break default: - botSay(where, 'Commande inconnue, tape !help si tu es perdu', false, true) + unknowmCmd() break } } diff --git a/libs/Help.js b/libs/Help.js index b7b32e8..dad8f70 100644 --- a/libs/Help.js +++ b/libs/Help.js @@ -9,46 +9,83 @@ class Help { * @param {Function} say * @param {String} where * @param {Array} args + * @param {Array} allowedCmds */ - static show (say, where, args) { + static show (say, where, args, allowedCmds) { if (args.length > 2) { switch (args[2]) { case '!artist': + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!artist') !== -1) { + Help.showArtistSong(say, where, args) + } + break case '!song': - Help.showArtistSong(say, where, args) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!song') !== -1) { + Help.showArtistSong(say, where, args) + } break case '!stats': - Help.showStats(say, where) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stats') !== -1) { + Help.showStats(say, where) + } break case '!when': - Help.showWhen(say, where) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!when') !== -1) { + Help.showWhen(say, where) + } break case '!list': - Help.showList(say, where) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!list') !== -1) { + Help.showList(say, where) + } break case '!notifications': - Help.showNotifications(say, where) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!notifications') !== -1) { + Help.showNotifications(say, where) + } break case '!stream': - Help.showStream(say, where) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stream') !== -1) { + Help.showStream(say, where) + } break case '!mute': - Help.showMute(say, where) + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!mute') !== -1) { + Help.showMute(say, where) + } break default: break } } else { this.say(say, where, 'IRC Radio Bot :: Help') - this.say(say, where, '!artist {nom à sauvegarder si différent du morceau en cours}') - this.say(say, where, '!song {nom à sauvegarder si différent du morceau en cours}') - this.say(say, where, '!stats {artist/song}') - this.say(say, where, '!when ') - this.say(say, where, '!list ') - this.say(say, where, '!help {command}') - this.say(say, where, '!notifications ') - this.say(say, where, '!stream') - this.say(say, where, '!mute ') + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!artist') !== -1) { + this.say(say, where, '!artist {nom à sauvegarder si différent du morceau en cours}') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!song') !== -1) { + this.say(say, where, '!song {nom à sauvegarder si différent du morceau en cours}') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stats') !== -1) { + this.say(say, where, '!stats {artist/song}') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!when') !== -1) { + this.say(say, where, '!when ') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!list') !== -1) { + this.say(say, where, '!list ') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!help') !== -1) { + this.say(say, where, '!help {command}') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!notifications') !== -1) { + this.say(say, where, '!notifications ') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stream') !== -1) { + this.say(say, where, '!stream') + } + if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!mute') !== -1) { + this.say(say, where, '!mute ') + } } this.say(say, where, '__ END __') }