@2 - Gestion des commandes actives

This commit is contained in:
dbroqua 2020-01-10 20:55:53 +01:00
parent ab7530024e
commit deb5762956
2 changed files with 129 additions and 38 deletions

View file

@ -175,32 +175,83 @@ const botSay = (where, what, dontDisplayRadio, forceSend) => {
const actions = (where, message, from) => { const actions = (where, message, from) => {
const exploded = message.split(' ') 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 // Le message publié est pour le bot
if (exploded[0].indexOf(process.env.IRC_NICKNAME) === 0) { if (exploded[0].indexOf(process.env.IRC_NICKNAME) === 0) {
switch (exploded[1]) { switch (exploded[1]) {
case '!artist': case '!artist':
case '!song': if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!artist') !== -1) {
artistSong.action(exploded[1].replace('!', ''), botSay, from, currentSong, exploded) artistSong.action(exploded[1].replace('!', ''), botSay, from, currentSong, exploded)
} else {
unknowmCmd()
}
break
case '!song':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!song') !== -1) {
artistSong.action(exploded[1].replace('!', ''), botSay, from, currentSong, exploded)
} else {
unknowmCmd()
}
break break
case '!help': case '!help':
Help.show(botSay, where, exploded) if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!help') !== -1) {
Help.show(botSay, where, exploded, allowedCmds)
} else {
unknowmCmd()
}
break break
case '!when': case '!when':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!when') !== -1) {
when.action(botSay, where, exploded) when.action(botSay, where, exploded)
} else {
unknowmCmd()
}
break break
case '!stats': case '!stats':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stats') !== -1) {
stats.action(botSay, where, exploded) stats.action(botSay, where, exploded)
} else {
unknowmCmd()
}
break break
case '!list': case '!list':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!list') !== -1) {
list.action(botSay, where, exploded) list.action(botSay, where, exploded)
} else {
unknowmCmd()
}
break break
case '!notifications': case '!notifications':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!notifications') !== -1) {
preferences.notifications(botSay, where, from, exploded) preferences.notifications(botSay, where, from, exploded)
} else {
unknowmCmd()
}
break break
case '!stream': case '!stream':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stream') !== -1) {
botSay(where, process.env.PUBLIC_RADIO_STREAM) botSay(where, process.env.PUBLIC_RADIO_STREAM)
} else {
unknowmCmd()
}
break break
case '!mute': case '!mute':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!mute') !== -1) {
if (exploded[2] && ['on', 'off', 'state'].indexOf(exploded[2]) !== -1) { if (exploded[2] && ['on', 'off', 'state'].indexOf(exploded[2]) !== -1) {
switch (exploded[2]) { switch (exploded[2]) {
case 'on': case 'on':
@ -217,10 +268,13 @@ const actions = (where, message, from) => {
} else { } else {
botSay(where, '!help mute', false, true) botSay(where, '!help mute', false, true)
} }
} else {
unknowmCmd()
}
break break
default: default:
botSay(where, 'Commande inconnue, tape !help si tu es perdu', false, true) unknowmCmd()
break break
} }
} }

View file

@ -9,47 +9,84 @@ class Help {
* @param {Function} say * @param {Function} say
* @param {String} where * @param {String} where
* @param {Array} args * @param {Array} args
* @param {Array} allowedCmds
*/ */
static show (say, where, args) { static show (say, where, args, allowedCmds) {
if (args.length > 2) { if (args.length > 2) {
switch (args[2]) { switch (args[2]) {
case '!artist': case '!artist':
case '!song': if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!artist') !== -1) {
Help.showArtistSong(say, where, args) Help.showArtistSong(say, where, args)
}
break
case '!song':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!song') !== -1) {
Help.showArtistSong(say, where, args)
}
break break
case '!stats': case '!stats':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stats') !== -1) {
Help.showStats(say, where) Help.showStats(say, where)
}
break break
case '!when': case '!when':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!when') !== -1) {
Help.showWhen(say, where) Help.showWhen(say, where)
}
break break
case '!list': case '!list':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!list') !== -1) {
Help.showList(say, where) Help.showList(say, where)
}
break break
case '!notifications': case '!notifications':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!notifications') !== -1) {
Help.showNotifications(say, where) Help.showNotifications(say, where)
}
break break
case '!stream': case '!stream':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stream') !== -1) {
Help.showStream(say, where) Help.showStream(say, where)
}
break break
case '!mute': case '!mute':
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!mute') !== -1) {
Help.showMute(say, where) Help.showMute(say, where)
}
break break
default: default:
break break
} }
} else { } else {
this.say(say, where, 'IRC Radio Bot :: Help') this.say(say, where, 'IRC Radio Bot :: Help')
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!artist') !== -1) {
this.say(say, where, '!artist <add/del> {nom à sauvegarder si différent du morceau en cours}') this.say(say, where, '!artist <add/del> {nom à sauvegarder si différent du morceau en cours}')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!song') !== -1) {
this.say(say, where, '!song <add/del> {nom à sauvegarder si différent du morceau en cours}') this.say(say, where, '!song <add/del> {nom à sauvegarder si différent du morceau en cours}')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stats') !== -1) {
this.say(say, where, '!stats <period> {artist/song}') this.say(say, where, '!stats <period> {artist/song}')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!when') !== -1) {
this.say(say, where, '!when <period> <artist/song>') this.say(say, where, '!when <period> <artist/song>')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!list') !== -1) {
this.say(say, where, '!list <period> <artist/song>') this.say(say, where, '!list <period> <artist/song>')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!help') !== -1) {
this.say(say, where, '!help {command}') this.say(say, where, '!help {command}')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!notifications') !== -1) {
this.say(say, where, '!notifications <on/off/state>') this.say(say, where, '!notifications <on/off/state>')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!stream') !== -1) {
this.say(say, where, '!stream') this.say(say, where, '!stream')
}
if (allowedCmds[0] === 'ALL' || allowedCmds.indexOf('!mute') !== -1) {
this.say(say, where, '!mute <on/off/state>') this.say(say, where, '!mute <on/off/state>')
} }
}
this.say(say, where, '__ END __') this.say(say, where, '__ END __')
} }