Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • add-mongoose
  • add-website
  • add-bot
4 results

telegram.js

Blame
  • 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}.`)