Naltox / telegram-node-bot

Node module for creating Telegram bots.
MIT License
723 stars 143 forks source link

Telegram-node-bot 1 worker with firebase child_added #160

Open livioalves opened 7 years ago

livioalves commented 7 years ago

Telegram-node-bot V4 is causing Firebase child_added to fire twice for the same child, while on V3 its working fine. I had to downgrade to V3 to solve the problem.

Sample code:

const Telegram = require('telegram-node-bot'); const TelegramBaseController = Telegram.TelegramBaseController; const tg = new Telegram.Telegram('');

var Firebase = require('firebase');

var config = { apiKey: '', databaseURL: " serviceAccount: '' };

Firebase.initializeApp(config);

var Items = Firebase.database().ref('path');

Items.on('child_added', function (snapshot) { var item = snapshot.val(); SendToTopic(item.topic, item.data);

})

function SendToTopic (topic, message) {

var subscribers = Firebase.database().ref('sub' );
subscribers.once('value', function (snapshot) {
    snapshot.forEach(
        item => { 
            tg.api.sendMessage(item.key, message); 
        }
    );
});

}

AndryFM commented 7 years ago

Are you can use this solution: https://github.com/Naltox/telegram-node-bot#clustering

const tg = new Telegram.Telegram('YOUR_TOKEN', {
    workers: 1
})

tg.sendMessage(123, 'test message') //will be sent 2 times (one time on master and one time on worker)

tg.onMaster(() => {
    tg.sendMessage(123, 'test message') //will be sent one time
})