refactored. A strange bug persists…

This commit is contained in:
Adrian Amaglio 2020-03-30 20:55:12 +02:00
parent 942ee90eff
commit b500d7d485
1 changed files with 112 additions and 47 deletions

159
educ.js
View File

@ -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 daccord',
},
'non': {
'prefix': ':thumbsdown:',
'description': 'Je ne suis pas daccord',
},
'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': 'Jadore',
},
'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 lon y a envoyé */
/* 1282482389371398137183: <msg> */
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');