Fixed feedInterval not clearing + added reconnect interval to config

reconnectInterval is optional
This commit is contained in:
benji7425 2017-01-04 19:53:47 +00:00
parent 62f1517767
commit 2be009806d
3 changed files with 19 additions and 20 deletions

View file

@ -1,5 +1,10 @@
# Changelog # Changelog
## Unreleased
### Updated
- Updated reconnect logic to hopefully be more stable
## v1.1.1 ## v1.1.1
### Added ### Added

View file

@ -1,6 +1,6 @@
{ {
"feedUrl": "https://www.youtube.com/feeds/videos.xml?user=EthosLab", "feedUrl": "https://www.youtube.com/feeds/videos.xml?user=EthosLab",
"channelID": "241238530376990722", "channelID": "264420391282409473",
"pollingInterval": 5000, "pollingInterval": 5000,
"numLinksToCache": 10, "numLinksToCache": 10,
"youtubeMode": true "youtubeMode": true

View file

@ -12,14 +12,13 @@ var Config = require("./config.json"); //config file containing other settings
var DiscordClient = { var DiscordClient = {
bot: null, bot: null,
feedTimer: null, feedInterval: null,
reconnectTimer: null, reconnectInterval: null,
startup: function () { startup: function () {
//check if we can connect to discordapp.com to authenticate the bot //check if we can connect to discordapp.com to authenticate the bot
Dns.resolve("discordapp.com", function (err) { Dns.resolve("discordapp.com", function (err) {
if (err) { if (err)
throw "CONNECTION ERROR: Unable to locate discordapp.com to authenticate the bot", err; Log.error("CONNECTION ERROR: Unable to locate discordapp.com to authenticate the bot", err);
}
else { else {
//if there was no error, go ahead and create and authenticate the bot //if there was no error, go ahead and create and authenticate the bot
DiscordClient.bot = new Discord.Client({ DiscordClient.bot = new Discord.Client({
@ -37,26 +36,21 @@ var DiscordClient = {
onReady: function () { onReady: function () {
Log.info("Registered/connected bot " + DiscordClient.bot.username + " - (" + DiscordClient.bot.id + ")"); Log.info("Registered/connected bot " + DiscordClient.bot.username + " - (" + DiscordClient.bot.id + ")");
clearInterval(DiscordClient.reconnectTimer); clearInterval(DiscordClient.reconnectInterval);
Log.info("Setting up timer to check feed every " + Config.pollingInterval + " milliseconds"); Log.info("Setting up timer to check feed every " + Config.pollingInterval + " milliseconds");
DiscordClient.feedTimer = setInterval(Feed.checkAndPost, Config.pollingInterval); //set up the timer to check the feed DiscordClient.feedInterval = setInterval(Feed.checkAndPost, Config.pollingInterval); //set up the timer to check the feed
//we need to check past messages for links on startup, but also on reconnect because we don't know what has happened during the downtime DiscordClient.checkPastMessagesForLinks(); //we need to check past messages for links on startup, but also on reconnect because we don't know what has happened during the downtime
DiscordClient.checkPastMessagesForLinks();
}, },
onDisconnect: function (err, code) { onDisconnect: function (err, code) {
Log.event("Bot was disconnected! " + err ? err : "" + code ? code : "No disconnect code provided.\nClearing the feed timer and starting reconnect timer", "Discord.io"); Log.event("Bot was disconnected! " + (err ? err : "") + (code ? code : "No disconnect code provided.") + "\nClearing the feed timer and starting reconnect timer", "Discord.io");
DiscordClient.reconnectTimer = setInterval(function () { clearInterval(DiscordClient.feedInterval)
try {
//I've had enough problems with reconnecting properly so just call the startup function to reset everything when we want to reconnect DiscordClient.reconnectInterval = setInterval(function () {
DiscordClient.startup(); DiscordClient.startup();
} }, (Config.reconnectInterval || Config.pollingInterval));
catch(ex){
Log.error(ex);
}
});
}, },
onMessage: function (user, userID, channelID, message) { onMessage: function (user, userID, channelID, message) {
//check if the message is in the right channel, contains a link, and is not the latest link from the rss feed //check if the message is in the right channel, contains a link, and is not the latest link from the rss feed