diff --git a/educ.js b/educ.js index caf4674..934b77f 100644 --- a/educ.js +++ b/educ.js @@ -7,61 +7,126 @@ client.on('ready', () => { // l'ID du channel de test (test-bot) pour plus tard // var testchan_id = '691952512332202064'; -var leve_main=[]; -var pas_dacc=[]; -message = ""; // var string à compléter + +/* Liste des réactions possibles et de leurs représentants actuel */ +var reactions = { + 'oui': { + 'prefix': ':thumbsup:', + 'description': 'Je suis d’accord', + }, + 'non': { + 'prefix': ':thumbsdown:', + 'description': 'Je ne suis pas d’accord', + }, + 'parole': { + 'prefix': ':raised_hand:', + 'description': 'Je veux parler', + }, + 'réponse': { + 'prefix': ':raised_hands:', + 'description': 'Je veux répondre rapidement', + }, + 'suffit': { + 'prefix': ':octogonal_sign:', + 'description': 'On tourne en rond', + }, + 'écoute': { + 'prefix': ':hear_no_evil:', + 'description': 'On ne s’écoute pas', + }, + 'love': { + 'prefix': ':heart_eyes:', + 'description': 'J’adore', + }, + 'dab': { + 'prefix': ':dab:', + 'description': 'Dab', + }, +}; +for (var index in reactions) { + reactions[index].people = [] +} + +/* Liste des channels où on peut lire avec le dernier message que l’on y a envoyé */ +/* 1282482389371398137183: */ +var channels = {} + +var last_post = null; /* On se souvient du derier post que ce bot a envoyé pour le virer dès que possible */ client.on('message', msg => { - - // Various features - - // ignore own messages - if(msg.author.username === 'bod-educ-pop'){ - return; + if(msg.content === '!educpop-reset') { + for (var index in reactions) { + reactions[index].people = [] + } + reply(msg) + msg.reply('La liste est vidée :)') } - - if(msg.content === 'ping'){ - msg.reply('mais encore :thinking:'); + else if (msg.content === '!educpop-enable') { + var id = msg.channel.id + if (id in channels) { + msg.reply('J’écoute déjà ce canal texte.') + } else { + channels[id] = null + msg.reply('J’écoute maintenant ce canal texte.') + } + } + else if (msg.content === '!educpop-disable') { + var id = msg.channel.id + if (id in channels) { + delete channels[id] + msg.reply('Je n’écoute plus ce canal texte.') + } else { + msg.reply('Je n’écoutais pas ce canal texte :o') + } + } + else if (msg.content === '!educpop-help') { + var text = 'Tapez simplement le mot-clé ci-dessous pour être comptabilisé. Tapez un - immédiatement suivi du mot-clé pour être retiré du compte : -oui !' + for (var index in reactions) { + text += '\n' + reactions[index].prefix + index + ' : ' + reactions[index].description + } + msg.author.send(text) + msg.delete() + } + /* Listen to educ pop stuff only in authorized channels */ + else if(!(msg.channel.id in channels)) { return; } - if(msg.author.username === 'remi.peltier'){ - msg.reply("Va bosser Rémi"); - return; + /* save and ignore own messages */ + else if(msg.author.username === 'bod-educ-pop'){ // TODO only log it if answer to educpop + channels[msg.channel.id] = msg; } - - // TODO : changer le surnom de la personne en ce qu'elle mange - if(msg.content === 'je mange'){ - console.log(""); + /* Educ pop stuff */ + else if(msg.content.startsWith('-')) { + var content = msg.content.slice(1) + if (content in reactions) { + var reaction = reactions[content].people + var index = reaction.indexOf(msg.author.username) + if (index >= 0) { + reaction.splice(index, 1) + } + reply(msg) + } } - - // exit if not on test channel. Might cause problem if asynchronous behavior. - if(msg.channel.name != 'test-bot'){ - return; + else if (msg.content in reactions) { + var reaction = reactions[msg.content].people + if (reaction.indexOf(msg.author.username) < 0) { + reaction.push(msg.author.username) + } + reply(msg) } - - // Educ pop stuff - // - if(msg.content === 'leve'){ - leve_main.push(msg.author.username); - } - if(msg.content === 'non'){ - pas_dacc.push(msg.author.username); - } - - /* TODO : Implémenter les messages suivants : - * > "laisse" (je laisse la parole > on vire le pseudo de la liste "Lèvent la main" - * > "réponse rapide" (on me met au début de la liste, et on place la personne qui est en train de parler juste derrière. - * > autres mouvements d'educ pop : "d'accord", "ça tourne en rond", "on s'écoute plus", etc - */ - - message += "*Lèvent la main : " + String(leve_main); - message += "* Pas d'accord : " + String(pas_dacc); - - msg.reply(message); - - msg.delete(); // marche pas, TODO : supprimer le message pour n'obtenir que les résumés. - - message = ""; // reset message. }); + +function reply (msg) { + var text = '' + for (var index in reactions) { + if (reactions[index].people.length > 0) + text += '\n' + reactions[index].prefix + String(reactions[index].people) + } + + if(channels[msg.channel.id]) channels[msg.channel.id].delete() + msg.reply(text) + msg.delete() +} + client.login('NjkxOTUzMDQzMDcxMzAzNzIy.Xnnhng.pYBFO2ogooVs2AyYz8Pk6AKhMoo');