Merge branch '1-mute-loud' into 'develop'

Resolve "!mute !loud"

Closes #1

See merge request dbroqua/irc-radio-bot!1
This commit is contained in:
Damien Broqua 2020-01-10 20:34:56 +01:00
commit 2b89832de4
2 changed files with 102 additions and 57 deletions

View file

@ -16,6 +16,8 @@ const stats = new Statistics(models)
const list = new List(models)
const preferences = new Preferences(models)
let isMute = false
let titlePath = null
let artistPath = null
if (process.env.STREAM_PATH_TITLE) {
@ -73,7 +75,7 @@ if (!process.env.STREAM_TYPE || process.env.STREAM_TYPE === 'radio') {
// Listener on new song
stream.on('metadata', function (data) {
console.log('RAW DATA:', data)
console.info('RAW DATA:', data)
// let song = data.replace(/[^A-Za-z 0-9 .,?""!@#$%^&*()-_=+;:<>/\\|}{[\]`~]*/g, '')
const song = data.substring(13, data.length - 1).replace(/\0/g, '').replace('\';', '')
@ -155,10 +157,13 @@ bot.addListener('error', function (message) {
* @param {String} where
* @param {String} what
* @param {Boolean} dontDisplayRadio
* @param {Boolean} forceSend
*/
const botSay = (where, what, dontDisplayRadio) => {
const message = `${(!dontDisplayRadio ? `${process.env.RADIO_ALIAS} : ` : '')}${what}`
bot.say(where, message)
const botSay = (where, what, dontDisplayRadio, forceSend) => {
if (!isMute || forceSend || where.indexOf('#') !== 0) {
const message = `${(!dontDisplayRadio ? `${process.env.RADIO_ALIAS} : ` : '')}${what}`
bot.say(where, message)
}
}
/**
@ -194,9 +199,26 @@ const actions = (where, message, from) => {
break
case '!stream':
botSay(where, process.env.PUBLIC_RADIO_STREAM)
break
case '!mute':
if (exploded[2] && ['on', 'off', 'state'].exploded[2] !== -1) {
switch (exploded[2]) {
case 'on':
isMute = true
break
case 'off':
isMute = false
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)
}
break
default:
botSay(where, 'Commande inconnue, tape !help si tu es perdu')
botSay(where, 'Commande inconnue, tape !help si tu es perdu', false, true)
break
}
}
@ -215,7 +237,7 @@ if (process.env.SAY_HELLO && process.env.SAY_HELLO === 'true') {
bot.addListener('join', (channel, who) => {
// Welcome them in!
if (who !== process.env.IRC_NICKNAME) {
botSay(process.env.IRC_CHANNEL, 'Hello ' + who + '! Have a metal day! \\m/(-.-)\\m/', true)
botSay(process.env.IRC_CHANNEL, 'Hello ' + who + '! Have a metal day! \\m/(-.-)\\m/', true, true)
}
})
}

View file

@ -1,5 +1,9 @@
class Help {
static helpSay (say, where, message) {
say(where, message, true, true)
}
/**
* Fonction affichant l'aide générale
* @param {Function} say
@ -28,21 +32,25 @@ class Help {
case '!stream':
Help.showStream(say, where)
break
case '!mute':
Help.showMute(say, where)
break
default:
break
}
} else {
say(where, 'IRC Radio Bot :: Help')
say(where, '!artist <add/del> {nom à sauvegarder si différent du morceau en cours}')
say(where, '!song <add/del> {nom à sauvegarder si différent du morceau en cours}')
say(where, '!stats <period> {artist/song}')
say(where, '!when <period> <artist/song>')
say(where, '!list <period> <artist/song>')
say(where, '!help {command}')
say(where, '!notifications <on/off/state>')
say(where, '!stream')
this.say(say, where, 'IRC Radio Bot :: Help')
this.say(say, where, '!artist <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}')
this.say(say, where, '!stats <period> {artist/song}')
this.say(say, where, '!when <period> <artist/song>')
this.say(say, where, '!list <period> <artist/song>')
this.say(say, where, '!help {command}')
this.say(say, where, '!notifications <on/off/state>')
this.say(say, where, '!stream')
this.say(say, where, '!mute <on/off/state>')
}
say(where, '__ END __')
this.say(say, where, '__ END __')
}
/**
@ -52,8 +60,23 @@ class Help {
* @param {Array} args
*/
static showStream (say, where, args) {
say(where, 'IRC Radio Bot :: Stream')
say(where, '!stream < Affiche l\'url du flux radio pour ton player favoris')
this.say(say, where, 'IRC Radio Bot :: Stream', false, true)
this.say(say, where, 'Affiche l\'url du flux radio pour ton player favoris', false, true)
this.say(say, where, '!stream')
}
/**
* Fonction affichant l'aide sur la commande !mute
* @param {Function} say
* @param {String} where
* @param {Array} args
*/
static showMute (say, where, args) {
this.say(say, where, 'IRC Radio Bot :: Mute')
this.say(say, where, 'Permet d\'activer ou de désactiver les messages publics du bot')
this.say(say, where, '!mute on')
this.say(say, where, '!mute off')
this.say(say, where, '!mute state')
}
/**
@ -63,9 +86,9 @@ class Help {
* @param {Array} args
*/
static showArtistSong (say, where, args) {
say(where, 'IRC Radio Bot :: Artist/Song')
say(where, `${args[2]} add {[facultatif] nom} < Permet de rajouter une notification sur ${args[2] === '!artist' ? 'cet artiste' : 'ce morceau'}`)
say(where, `${args[2]} del {[facultatif] nom} < Permet de supprimer une notification sur ${args[2] === '!artist' ? 'cet artiste' : 'ce morceau'}`)
this.say(say, where, 'IRC Radio Bot :: Artist/Song')
this.say(say, where, `${args[2]} add {[facultatif] nom} < Permet de rajouter une notification sur ${args[2] === '!artist' ? 'cet artiste' : 'ce morceau'}`)
this.say(say, where, `${args[2]} del {[facultatif] nom} < Permet de supprimer une notification sur ${args[2] === '!artist' ? 'cet artiste' : 'ce morceau'}`)
}
/**
@ -74,17 +97,17 @@ class Help {
* @param {String} where
*/
static showStats (say, where) {
say(where, 'IRC Radio Bot :: Stats')
say(where, 'Permet d\'afficher le nombre de passage à l\'antenne d\'un artiste/morceau sur une période donnée')
say(where, '!stats day <title>')
say(where, '!stats week <title>')
say(where, '!stats month <title>')
say(where, '!stats year <title>')
say(where, '!stats lastday <title>')
say(where, '!stats lastweek <title>')
say(where, '!stats lastmonth <title>')
say(where, '!stats lastyear <title>')
say(where, 'Si <title> n\'est pas spécifie la stats concerne le nombre d\'artistes différents pour cette période')
this.say(say, where, 'IRC Radio Bot :: Stats')
this.say(say, where, 'Permet d\'afficher le nombre de passage à l\'antenne d\'un artiste/morceau sur une période donnée')
this.say(say, where, '!stats day <title>')
this.say(say, where, '!stats week <title>')
this.say(say, where, '!stats month <title>')
this.say(say, where, '!stats year <title>')
this.say(say, where, '!stats lastday <title>')
this.say(say, where, '!stats lastweek <title>')
this.say(say, where, '!stats lastmonth <title>')
this.say(say, where, '!stats lastyear <title>')
this.say(say, where, 'Si <title> n\'est pas spécifie la stats concerne le nombre d\'artistes différents pour cette période')
}
/**
@ -93,16 +116,16 @@ class Help {
* @param {String} where
*/
static showWhen (say, where) {
say(where, 'IRC Radio Bot :: When')
say(where, 'Permet d\'afficher la dernier passage d\'un artiste/morceau sur une période donnée')
say(where, '!when day <title>')
say(where, '!when week <title>')
say(where, '!when month <title>')
say(where, '!when year <title>')
say(where, '!when lastday <title>')
say(where, '!when lastweek <title>')
say(where, '!when lastmonth <title>')
say(where, '!when lastyear <title>')
this.say(say, where, 'IRC Radio Bot :: When')
this.say(say, where, 'Permet d\'afficher la dernier passage d\'un artiste/morceau sur une période donnée')
this.say(say, where, '!when day <title>')
this.say(say, where, '!when week <title>')
this.say(say, where, '!when month <title>')
this.say(say, where, '!when year <title>')
this.say(say, where, '!when lastday <title>')
this.say(say, where, '!when lastweek <title>')
this.say(say, where, '!when lastmonth <title>')
this.say(say, where, '!when lastyear <title>')
}
/**
@ -111,16 +134,16 @@ class Help {
* @param {String} where
*/
static showList (say, where) {
say(where, 'IRC Radio Bot :: List')
say(where, 'Permet d\'afficher la liste des titres joués pour un artiste sr une période donnée')
say(where, '!list day <artist>')
say(where, '!list week <artist>')
say(where, '!list month <artist>')
say(where, '!list year <artist>')
say(where, '!list lastday <artist>')
say(where, '!list lastweek <artist>')
say(where, '!list lastmonth <artist>')
say(where, '!list lastyear <artist>')
this.say(say, where, 'IRC Radio Bot :: List')
this.say(say, where, 'Permet d\'afficher la liste des titres joués pour un artiste sr une période donnée')
this.say(say, where, '!list day <artist>')
this.say(say, where, '!list week <artist>')
this.say(say, where, '!list month <artist>')
this.say(say, where, '!list year <artist>')
this.say(say, where, '!list lastday <artist>')
this.say(say, where, '!list lastweek <artist>')
this.say(say, where, '!list lastmonth <artist>')
this.say(say, where, '!list lastyear <artist>')
}
/**
@ -129,11 +152,11 @@ class Help {
* @param {String} where
*/
static showNotifications (say, where) {
say(where, 'IRC Radio Bot :: Notifications')
say(where, 'Permet d\'activer et de désactiver les notifications pour soit')
say(where, '!notifications off')
say(where, '!notifications off')
say(where, '!notifications state < Permet de voir si l\'on a désactivé ou non les notifications')
this.say(say, where, 'IRC Radio Bot :: Notifications')
this.say(say, where, 'Permet d\'activer et de désactiver les notifications pour soit')
this.say(say, where, '!notifications off')
this.say(say, where, '!notifications off')
this.say(say, where, '!notifications state < Permet de voir si l\'on a désactivé ou non les notifications')
}
}