diff --git a/connection-db.js b/connection-db.js index 807434f5dc2f72f0d8833eedd25407ad428b6636..1535e9231f8da701dfc92186c777b859a8a19077 100644 --- a/connection-db.js +++ b/connection-db.js @@ -3,9 +3,6 @@ // Modules extérieurs var mysql = require('promise-mysql'); -// Création de variables -var schedules = {}; - // Configurations const config = require('./config'); diff --git a/index.js b/index.js index cca0cc0c5d1ebc4343b398bb181d2e17c642fb29..057473d6dfcdd587b70fb6cd07e8e33ae0b85af1 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,5 @@ +// INDEX.JS : Script principal pour lancer le serveur + // Modules propres var bot = require('./telegram'); require('./website'); diff --git a/requests.js b/requests.js index ad5e031d0ceaed6ac6cad1119790f609ab6aff34..61144e3ae5b89f36ffd13a410fca4329bd80bb5c 100644 --- a/requests.js +++ b/requests.js @@ -62,6 +62,19 @@ function getGroupById(chan, id) { }).catch(err => { console.error(err) }) } + +function getMe(chan) { + return getNewTokenIfNecessary(chan).then(chan => { + const options = { + headers: { 'Authorization': `Bearer ${chan.token}` }, + json: true + } + + return rp('https://auth.viarezo.fr/api/user/show/me', options) + }) +} + + // Récupération d'un token function getFirstToken(code, state) { @@ -127,4 +140,4 @@ function getNewTokenIfNecessary(chan) { } } -module.exports = { getBirthdays, sendRequest, searchGroups, getGroupById, getFirstToken, getNewToken }; \ No newline at end of file +module.exports = { getBirthdays, sendRequest, searchGroups, getGroupById, getMe, getFirstToken, getNewToken }; \ No newline at end of file diff --git a/schedule.js b/schedule.js index 964bd433d0f833e6d72c290992bc6bf0a530ffd1..a2cf7c368108d805830dc31872e8bbfbeea6bc07 100644 --- a/schedule.js +++ b/schedule.js @@ -1,3 +1,5 @@ +// SCHEDULE.JS : Module permettant de créer des rappels d'anniversaires + // Modules extérieurs var schedule = require('node-schedule'); diff --git a/telegram.js b/telegram.js index 5e93a941a2c026820cf547ecd216f221e7c2b007..22b1389cffff6bd35ca578a7894634ecc914192c 100644 --- a/telegram.js +++ b/telegram.js @@ -7,7 +7,7 @@ var TelegramBot = require('node-telegram-bot-api'); // Modules propres var { getChanByChatId, createChan, deleteChanByChatId, modifyChan, addGroup, removeGroup, removeAllGroups, getGroups } = require('./connection-db'); -var { getBirthdays, searchGroups, getGroupById } = require('./requests'); +var { getBirthdays, searchGroups, getGroupById, getMe } = require('./requests'); var { schedules, addSchedule, deleteSchedule } = require('./schedule'); // Configurations @@ -207,7 +207,7 @@ bot.onText(/\/schedule (.+)/, (msg, match) => { bot.onText(/\/unschedule/, msg => { const chatId = msg.chat.id; getChanByChatId(chatId).then(chan => { - if (!chan) return bot.sendMessage(chatId, 'Pas de compte enregistré, faites /start pour commencer'); + if (!chan) return bot.sendMessage(chatId, 'Pas de compte enregistré, faites /start pour commencer.'); if (chan.schedule == '') return bot.sendMessage(chatId, 'Pas de rappel défini...'); deleteSchedule(chatId) @@ -218,6 +218,49 @@ bot.onText(/\/unschedule/, msg => { }) }) +// Renvoi les infos du chan +bot.onText(/\/info/, msg => { + const chatId = msg.chat.id; + // il faut chercher le gars sur l'auth.viarezo.fr/me + getChanByChatId(chatId).then(chan => { + // gestion des cas où l'utilisateur n'est pas totalement connecté + if (!chan) return bot.sendMessage(chatId, 'Pas de compte enregistré, faites /start pour commencer.'); + if (chan.username.length === 0 && chan.token.length === 0) return bot.sendMessage(chatId, 'Pas de demande de connexion faite, tapez /connect pour en envoyer une.'); + if (chan.token.length === 0) return bot.sendMessage(chatId, `Une demande de connexion a été faite par @${chan.username} mais n'a toujours pas été acceptée.\n${config.website.protocol}://${config.website.hostname}/?state=${chan.state}`); + return Promise.all([ + getMe(chan), + getGroups(chan.chatId), + getGroups(chan.chatId).then(groups => { + return Promise.all(groups.map(group => getGroupById(chan, group))) + }) + ]).then(([me, groups, names]) => { + // affiche qui s'est connecté + var msg = `${me.firstName} ${me.lastName} (@${chan.username}) s'est connecté à l'OAuth.\n\n`; + + // affiche le moment du rappel journalier + if (chan.schedule.length !== 0) { + msg += `Les rappels sont prévus tous les jours à ${chan.schedule}.\n`; + msg += 'Vous pouvez annuler ces rappels via /unschedule\n\n' + } else { + msg += `Vous n'avez pas de rappel journalier.\n` + msg += `Vous pouvez faire /schedule hh:mm pour en ajouter un.\n\n` + } + + // affiche la liste des associations à souhait + if (groups.length === 0) { + msg += 'La liste des associations / groupes est vide.\n'; + msg += 'Vous pouvez en chercher via /search sonNom, puis faire un /add sonID\n' + } else { + msg += `Les personnes faisant parti de ces associations / groupes auront leur anniversaire rapellé :\n`; + for (i = 0; i < groups.length; i++) { + msg += ` • ${names[i]} (id : ${groups[i]})\n` + } + } + bot.sendMessage(chatId, msg); + }) + }) +}) + // J'étais bien obligé (en vrai c'est pour tester) bot.onText(/\/nikmarine/, msg => { const chatId = msg.chat.id; diff --git a/website.js b/website.js index 178a4bdb0a565465f27c1bccc2cdca090bf74153..09b608f22006ab278545cbd7d3050304ea859a28 100644 --- a/website.js +++ b/website.js @@ -1,3 +1,5 @@ +// WEBSITE.JS : Gestion du site web + // Modules extérieurs var app = require('express')();