Select Git revision
telegram.js
-
Guillaume Vagner authoredGuillaume Vagner authored
telegram.js 9.51 KiB
process.env["NTBA_FIX_319"] = 1;
// Modules extérieurs
var TelegramBot = require('node-telegram-bot-api');
var schedule = require('node-schedule');
// Modules propres
var { query, getChanByChatId, createChan, deleteChanByChatId, modifyChan, addGroup, getGroups } = require('./connection-db');
var { getBirthdays, searchGroups, getGroupById, getNewToken } = require('./requests');
// Configurations
const config = require('./config');
// Création de variables
var bot = new TelegramBot(config.telegram.token, { polling: true });
var schedules = {};
// En cas de redémarrage de l'appli
query(`SELECT chatId, schedule FROM channel WHERE schedule <> ""`).then(rep => {
rep.forEach(chan => {
})
})
// A la connexion, création d'un document Channel dans MongoDB
bot.onText(/\/start/, msg => {
const chatId = msg.chat.id;
return getChanByChatId(chatId).then(chan => {
// /start déjà fait...
if (chan) return bot.sendMessage(chatId, 'Vous avez déjà fait lancé le bot sur cette conversation. Pour tout réinitialiser, faites /reset.')
return createChan({
chatId: chatId,
username: '',
state: '',
token: '',
refresh: '',
expiration: '',
schedule: ''
}).then(_ => {
const resp = '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 => {
const chatId = msg.chat.id;
// Suppression de l'objet
if (schedule[chatId]) {
schedule[chatId].cancel();
delete (schedule[chatId]);
}
return deleteChanByChatId(chatId).then(_ => {
const resp = 'Toutes vos paramètres ont été supprimés. Pour recommencer à m\'utiliser, faites /start.';
bot.sendMessage(chatId, resp);
})
})
// Si rien n'a été fait avant, propose un lien de connexion à l'OAuth2 de VR
bot.onText(/\/connect/, (msg, _) => {
const chatId = msg.chat.id;
getChanByChatId(chatId).then(chan => {
// start pas encore fait
if (!chan) return bot.sendMessage(chatId, 'Avant de vous authentifier, faites /start.');
// /connect déjà fait, renvoie vers le lien précédent
if (chan.state.length !== 0) return bot.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}.`)