Merged feature/reconnect-fixing into develop

This commit is contained in:
benji7425 2017-01-04 19:53:55 +00:00
commit 1d9f815ee9
3 changed files with 21 additions and 20 deletions

View File

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

View File

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

View File

@ -12,12 +12,13 @@ var Config = require("./config.json"); //config file containing other settings
var DiscordClient = {
bot: null,
feedTimer: null,
reconnectTimer: null,
feedInterval: null,
reconnectInterval: null,
startup: function () {
//check if we can connect to discordapp.com to authenticate the bot
Dns.resolve("discordapp.com", function (err) {
if (err) Log.error("CONNECTION ERROR: Unable to locate discordapp.com to authenticate the bot", err);
if (err)
Log.error("CONNECTION ERROR: Unable to locate discordapp.com to authenticate the bot", err);
else {
//if there was no error, go ahead and create and authenticate the bot
DiscordClient.bot = new Discord.Client({
@ -35,26 +36,21 @@ var DiscordClient = {
onReady: function () {
Log.info("Registered/connected bot " + DiscordClient.bot.username + " - (" + DiscordClient.bot.id + ")");
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
clearInterval(DiscordClient.reconnectInterval);
//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();
Log.info("Setting up timer to check feed every " + Config.pollingInterval + " milliseconds");
DiscordClient.feedInterval = setInterval(Feed.checkAndPost, Config.pollingInterval); //set up the timer to check the feed
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
},
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");
clearInterval(DiscordClient.feedTimer); //stop the feed timer
clearInterval(DiscordClient.feedInterval)
//set up a timer to try reconnect every 5sec
DiscordClient.reconnectTimer = setInterval(function () {
try {
DiscordClient.bot.connect();
}
catch (ex) {
Log.error("Exception thrown trying to reconnect bot." + ex.message);
}
});
DiscordClient.reconnectInterval = setInterval(function () {
DiscordClient.startup();
}, (Config.reconnectInterval || Config.pollingInterval));
},
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
@ -119,7 +115,7 @@ var YouTube = {
var Links = {
standardise: function (link) {
link = link.replace("https://", "http://"); //cheaty way to get around http and https not matching
if(Config.youtubeMode) link = link.split("&")[0]; //quick way to chop off stuff like &feature=youtube etc
if (Config.youtubeMode) link = link.split("&")[0]; //quick way to chop off stuff like &feature=youtube etc
return link;
},
messageContainsLink: function (message) {