Added user subscription with subscribers being stored in a json file

This commit is contained in:
benji7425 2017-01-08 07:45:22 +00:00
parent 0e33fb9e1d
commit c54a48fd50
3 changed files with 42 additions and 10 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
log
subscribers.json
# Created by https://www.gitignore.io/api/visualstudiocode,node

View file

@ -4,5 +4,7 @@
"pollingInterval": 5000,
"numLinksToCache": 10,
"youtubeMode": true,
"logRequestMessage": "!logsplease"
"logRequestMessage": "!logsplease",
"subscribeRequestMessage": "!subscribe",
"unsubscribeRequestMessage": "!unsubscribe"
}

View file

@ -49,8 +49,9 @@ var DiscordClient = {
intervalFunc = DiscordClient.startup; //reassign the interval function to try restart the bot every 5 sec
},
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
if (channelID === Config.channelID && Links.messageContainsLink(message) && (message !== Links.latestFromFeedlatestFeedLink)) {
if (channelID === Config.channelID) {
//contains a link, and is not the latest link from the rss feed
if (Links.messageContainsLink(message) && (message !== Links.latestFromFeedlatestFeedLink)) {
Log.event("Detected posted link in this message: " + message, "Discord.io");
//extract the url from the string, and cache it
@ -59,6 +60,13 @@ var DiscordClient = {
return url;
});
}
else if (message == Config.subscribeRequestMessage) {
Subscriptions.subscribe(userID, user);
}
else if (message == Config.unsubscribeRequestMessage) {
Subscriptions.unsubscribe(userID, user);
}
}
else if (message == Config.logRequestMessage) {
DiscordClient.bot.uploadFile({
to: channelID,
@ -112,6 +120,26 @@ var DiscordClient = {
}
};
var Subscriptions = {
subscribers: [],
parse: function(){
JsonFile.readFile("./subscribers.json", (err, obj) => {
if(err) Log.error("Unable to parse json subscribers file", err);
this.subscribers = obj || [];
});
},
subscribe: function (userID, user) {
this.subscribers.push(userID);
JsonFile.writeFile("./subscribers.json", this.subscribers, (err) => { if(err) Log.error("Unable to write subscribers to json file", err); });
Log.event("Subscribed user " + (user ? user + "(" + user + ")" : userID));
},
unsubscribe: function (userID, user) {
this.subscribers.splice(this.subscribers.indexOf(userID));
JsonFile.writeFile("./subscribers.json", this.subscribers, (err) => { if(err) Log.error("Unable to write subscribers to json file", err); });
Log.event("Unsubscribed user " + (user ? user + "(" + user + ")" : userID));
}
};
var YouTube = {
url: {
share: "http://youtu.be/",
@ -201,6 +229,7 @@ var intervalFunc = () => { }; //do nothing by default
//IIFE to kickstart the bot when the app loads
(function () {
Subscriptions.parse();
DiscordClient.startup();
setInterval(() => { intervalFunc(); }, Config.pollingInterval);
})();