Add view-feeds command

This commit is contained in:
benji7425 2017-08-23 01:47:18 +01:00
parent bf9fbdcdae
commit d0d148dbca
3 changed files with 20 additions and 8 deletions

View File

@ -4,6 +4,7 @@
"maxCacheSize": 10, "maxCacheSize": 10,
"commands": { "commands": {
"version": "version", "version": "version",
"addFeed": "add-feed" "addFeed": "add-feed",
"viewFeeds": "view-feeds"
} }
} }

View File

@ -30,18 +30,18 @@ module.exports = (client) => {
client.on("message", message => { client.on("message", message => {
if (message.author.id !== client.user.id) { //check the bot isn't triggering itself if (message.author.id !== client.user.id) { //check the bot isn't triggering itself
if (message.channel.type === "dm") if (message.channel.type === "dm")
HandleMessage.DM(client, config, message); HandleMessage.dm(client, config, message);
else if (message.channel.type === "text" && message.member) else if (message.channel.type === "text" && message.member)
HandleMessage.Text(client, config, message, guildsData); HandleMessage.text(client, config, message, guildsData);
} }
}); });
}; };
const HandleMessage = { const HandleMessage = {
DM: (client, config, message) => { dm: (client, config, message) => {
message.reply("This bot does not have any handling for direct messages. To learn more or get help please visit http://benji7425.github.io, or join my Discord server here: https://discord.gg/SSkbwSJ"); message.reply("This bot does not have any handling for direct messages. To learn more or get help please visit http://benji7425.github.io, or join my Discord server here: https://discord.gg/SSkbwSJ");
}, },
Text: (client, config, message, guildsData) => { text: (client, config, message, guildsData) => {
//handle admins invoking commands //handle admins invoking commands
if (message.content.startsWith(message.guild.me.toString()) //user is @mention-ing the bot if (message.content.startsWith(message.guild.me.toString()) //user is @mention-ing the bot
&& message.member.permissions.has("ADMINISTRATOR")) //user has admin perms && message.member.permissions.has("ADMINISTRATOR")) //user has admin perms
@ -55,6 +55,9 @@ const HandleMessage = {
case config.commands.addFeed: case config.commands.addFeed:
addFeed(client, guildsData, message, config.maxCacheSize); addFeed(client, guildsData, message, config.maxCacheSize);
break; break;
case config.commands.viewFeeds:
viewFeeds(client, guildsData, message);
break;
} }
} }
else if (guildsData[message.guild.id]) { else if (guildsData[message.guild.id]) {
@ -67,8 +70,6 @@ const HandleMessage = {
}; };
function addFeed(client, guildsData, message, maxCacheSize) { function addFeed(client, guildsData, message, maxCacheSize) {
const parameters = message.content.split(" "); //expect !addfeed <url> <channelName> <roleName>
const feedUrl = [...GetUrls(message.content)][0]; const feedUrl = [...GetUrls(message.content)][0];
const channel = message.mentions.channels.first(); const channel = message.mentions.channels.first();
@ -102,6 +103,11 @@ function addFeed(client, guildsData, message, maxCacheSize) {
}); });
} }
function viewFeeds(client, guildsData, message){
const guildData = guildsData[message.guild.id];
message.reply(guildData.feeds.map(f => f.toString()).join("\n"));
}
function checkFeedsInGuilds(guilds, guildsData) { function checkFeedsInGuilds(guilds, guildsData) {
Object.keys(guildsData).forEach(key => guildsData[key].checkFeeds(guilds)); Object.keys(guildsData).forEach(key => guildsData[key].checkFeeds(guilds));
} }

View File

@ -21,7 +21,7 @@ module.exports = class FeedData {
.filter(el => !this.cachedLinks.includes(el)); //filter out any already cached .filter(el => !this.cachedLinks.includes(el)); //filter out any already cached
Array.prototype.push.apply(this.cachedLinks, unique); Array.prototype.push.apply(this.cachedLinks, unique);
if(this.cachedLinks.length > this.maxCacheSize) if (this.cachedLinks.length > this.maxCacheSize)
this.cachedLinks.splice(0, this.cachedLinks.length - this.maxCacheSize); //remove the # of elements above the max from the beginning this.cachedLinks.splice(0, this.cachedLinks.length - this.maxCacheSize); //remove the # of elements above the max from the beginning
}; };
} }
@ -68,6 +68,11 @@ module.exports = class FeedData {
}); });
}); });
} }
toString() {
const blacklist = ["cachedLinks", "maxCacheSize"];
return `\`\`\`JavaScript\n ${JSON.stringify(this, (k, v) => !blacklist.includes(k) ? v : undefined, "\t")} \`\`\``;
}
}; };
function normaliseUrl(url) { function normaliseUrl(url) {