-
Adrien NUNES a rédigéAdrien NUNES a rédigé
VoteParser.js 2,33 Kio
const channelsID = require('./channels_conf.json');
const complotDB = require('../database/ComplotDB.js');
const CATEGORY = {
ACTION : 0,
REASON : 1,
ACTOR : 2
};
class VoteParser{
constructor(client){
this.client = client;
this.upVote = '👍';
this.score = 3;
this.categories = new Map([
[channelsID.actor, CATEGORY.ACTOR],
[channelsID.reason, CATEGORY.REASON],
[channelsID.action, CATEGORY.ACTION]
]);
this.infoMessage = null;
this.channelBase = this.client.channels.cache.get(channelsID.base);
}
setScore(score) {
this.score = score;
}
parse(message){
if(this.categories.has(message.channelId)){
const category = this.categories.get(message.channelId);
const reactions = message.reactions.resolve(this.upVote);
if(reactions && reactions.count >= this.score){
this.add(message, category);
}
}
}
async add(message, category){
let content = message.content;
const char = content.charAt(0);
const reste = content.slice(1);
content = (category === CATEGORY.ACTOR) ? char.toUpperCase() + reste: char.toLowerCase() + reste;
this.addFormatedString(content, category);
message.delete();
message.channel.send(`"${content}" ajouté ! \n Par <@${message.author.id}>`);
const dbString = complotDB.toString();
if(!this.infoMessage){
await this.deleteAllMessageInfo();
this.channelBase.send(dbString).then(message =>{
this.infoMessage = message;
});
}else{
this.infoMessage.edit(dbString);
}
}
addFormatedString(messageString, category){
switch (category){
case CATEGORY.ACTOR: complotDB.addActor(messageString); break;
case CATEGORY.ACTION: complotDB.addAction(messageString); break;
case CATEGORY.REASON: complotDB.addReason(messageString); break;
}
}
async deleteAllMessageInfo(){
let messages = await this.channelBase.messages.fetch();
let workers = [];
messages.forEach(m=>{
workers.push(m.delete());
});
await Promise.all(workers);
}
}
module.exports = VoteParser;