// A la connexion, création d'un document Channel dans MongoDB
bot.onText(/\/start/,msg=>{
constchatId=msg.chat.id;
returnChannel.findOne({
chatId:chatId
}).then(chan=>{
// /start déjà fait...
if (chan)returnbot.sendMessage(chatId,'Vous avez déjà fait lancé le bot sur cette conversation. Pour tout réinitialiser, faites /reset.')
returnChannel.create({
chatId:chatId,
username:'',
state:'',
token:'',
groups:[]
}).then(_=>{
constresp='Holà, je suis le Happy Botday, je suis là pour vous souhaiter vous rapeller les anniversaires de vos potes !\nPour commencer, il faut que quelqu\'un s\'identifie : /connect';
bot.sendMessage(chatId,resp);
})
})
});
// Suppression de l'objet créé lors du /start
bot.onText(/\/reset/,msg=>{
constchatId=msg.chat.id;
// Suppression de l'objet
returnChannel.findOneAndDelete({
chatId:chatId
}).then(_=>{
constresp='Toutes vos paramètres ont été supprimés. Pour recommencer à m\'utiliser, faites /start.';
returnbot.sendMessage(chatId,resp);
})
})
// Si rien n'a été fait avant, propose un lien de connexion à l'OAuth2 de VR
if (!chan)returnbot.sendMessage(chatId,'Avant de vous authentifier, faites /start.');
// /connect déjà fait, renvoie vers le lien précédent
if (chan.state.length!==0)returnbot.sendMessage(chatId,`@${chan.username} a déjà fait une demande. Vous pouvez annuler la demande via /cancel ou @${chan.username} peut se connecter depuis ce lien :\n${config.website.protocol}://${config.website.hostname}/?state=${chan.state}.`)
// authentification déjà faite
if (chan.token.length!==0)returnbot.sendMessage(chatId,`Une connexion a déjà été faite par @${chan.username}. Pour la réinitialiser, faites /disconnect`);
// dans le reste des cas, création d'un lien pour l'authentification et enregistrement dans l'objet pour être sur
constresp=`Pour vous identifier, connectez-vous via l\'OAuth2 de ViaRézo depuis ce lien :\n${config.website.protocol}://${config.website.hostname}/?state=${chan.state}`;
returnbot.sendMessage(chatId,resp);
})
})
}else{
bot.sendMessage(chatId,`Une connexion a déjà été faite par @${chan.username}. Pour la réinitialiser, faites /disconnect`);
}
});
// Annulation de la demande de connexion
bot.onText(/\/cancel/,msg=>{
constchatId=msg.chat.id;
Channel.findOne({
chatId:chatId
}).then(chan=>{
if (!chan)return
constresp=`Pour vous identifier, connectez-vous via l\'OAuth2 de ViaRézo depuis ce lien :\n${config.website.protocol}://${config.website.hostname}/?state=${state}`;
bot.sendMessage(chatId,resp);
// ne peut pas annuler une demande déjà acceptée
if (chan.token.length!==0)returnbot.sendMessage(chatId,'La demande d\'athentification a déjà été acceptée, elle ne peut pas être annulée. Pour se déconnecter, faites /disconnect.')
chan.username='';
chan.state='';
returnchan.save().then(chan=>{
returnbot.sendMessage(chatId,'La demande d\'authentification a été annulée. Vous pouvez vous reconnecter avec /connect.')
})
})
})
});
bot.onText(/\/disconnect/,(msg,_)=>{
// Permet de déconnecter l'utilisateur qui s'est authentifié sur l'OAuth2