2017-09-14 15:09:43 +03:00
|
|
|
const Core = require("../discord-bot-core");
|
2017-09-24 23:31:30 +03:00
|
|
|
const GetUrls = require("get-urls");
|
2017-09-14 15:09:43 +03:00
|
|
|
const GuildData = require("./models/guild-data.js");
|
2017-09-24 23:31:30 +03:00
|
|
|
// @ts-ignore
|
2017-09-14 15:09:43 +03:00
|
|
|
const Config = require("./config.json");
|
|
|
|
|
2017-09-24 23:31:30 +03:00
|
|
|
const token = require("../" + process.argv[2]).token,
|
|
|
|
dataFile = process.argv[3];
|
2017-09-14 15:09:43 +03:00
|
|
|
|
2017-09-24 23:31:30 +03:00
|
|
|
const client = new Core.Client(token, dataFile, __dirname + "/commands", GuildData);
|
2017-09-14 15:09:43 +03:00
|
|
|
|
2017-09-24 23:31:30 +03:00
|
|
|
client.on("beforeLogin", () => {
|
2017-10-02 02:52:36 +03:00
|
|
|
setInterval(() => checkFeedsInGuilds(), Config.feedCheckIntervalSec * 1000);
|
2017-09-24 23:31:30 +03:00
|
|
|
});
|
2017-09-14 15:09:43 +03:00
|
|
|
|
2017-09-24 23:39:34 +03:00
|
|
|
client.on("ready", () => {
|
2017-10-02 02:41:55 +03:00
|
|
|
doUpgradeJSON();
|
|
|
|
|
2017-10-02 02:52:36 +03:00
|
|
|
parseLinksInGuilds()
|
|
|
|
.then(() => checkFeedsInGuilds());
|
2017-09-14 15:09:43 +03:00
|
|
|
|
2017-10-02 01:19:10 +03:00
|
|
|
client.on("message", message => {
|
2017-10-02 13:49:46 +03:00
|
|
|
if (message.channel.type !== "text" || !message.member)
|
|
|
|
return;
|
|
|
|
|
2017-10-02 01:19:10 +03:00
|
|
|
const guildData = client.guildsData[message.guild.id];
|
|
|
|
if (guildData)
|
|
|
|
guildData.feeds.forEach(feedData => {
|
2017-10-06 01:05:46 +03:00
|
|
|
if (message.channel.id === feedData.channelID)
|
2017-10-02 01:19:10 +03:00
|
|
|
feedData.cachedLinks.push(...GetUrls(message.content));
|
|
|
|
});
|
|
|
|
});
|
2017-09-24 23:31:30 +03:00
|
|
|
});
|
2017-09-01 17:51:05 +03:00
|
|
|
|
2017-09-24 23:31:30 +03:00
|
|
|
client.bootstrap();
|
2017-09-01 17:51:05 +03:00
|
|
|
|
2017-09-20 02:04:04 +03:00
|
|
|
//INTERNAL FUNCTIONS//
|
2017-10-02 02:52:36 +03:00
|
|
|
function checkFeedsInGuilds() {
|
|
|
|
client.guilds.forEach(guild => {
|
|
|
|
const guildData = client.guildsData[guild.id];
|
|
|
|
if (guildData)
|
|
|
|
guildData.checkFeeds(guild);
|
|
|
|
});
|
2017-09-14 15:09:43 +03:00
|
|
|
}
|
2017-09-01 17:51:05 +03:00
|
|
|
|
2017-10-02 02:52:36 +03:00
|
|
|
function parseLinksInGuilds() {
|
2017-09-14 15:09:43 +03:00
|
|
|
const promises = [];
|
2017-10-02 02:52:36 +03:00
|
|
|
for (let guildId of client.guilds.keys()) {
|
|
|
|
const guildData = client.guildsData[guildId];
|
2017-09-14 15:09:43 +03:00
|
|
|
if (guildData)
|
2017-10-02 02:52:36 +03:00
|
|
|
promises.push(guildData.cachePastPostedLinks(client.guilds.get(guildId)));
|
2017-09-14 15:09:43 +03:00
|
|
|
}
|
|
|
|
return Promise.all(promises);
|
2017-10-02 02:41:55 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function doUpgradeJSON() {
|
|
|
|
Object.keys(client.guildsData).forEach(id => {
|
|
|
|
const guild = client.guilds.get(id);
|
|
|
|
if (!guild)
|
|
|
|
return;
|
|
|
|
|
|
|
|
client.guildsData[id].feeds.forEach(feed => {
|
|
|
|
if (feed.roleName) {
|
|
|
|
feed.roleID = client.guilds.get(id).roles.find(x => x.name.toLowerCase() === feed.roleName.toLowerCase()).id;
|
|
|
|
delete feed.roleName;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (feed.channelName) {
|
|
|
|
feed.channelID = client.guilds.get(id).channels.find(x => x.name.toLowerCase() === feed.channelName.toLowerCase()).id;
|
2017-10-02 02:52:36 +03:00
|
|
|
delete feed.channelName;
|
2017-10-02 02:41:55 +03:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2017-09-24 23:31:30 +03:00
|
|
|
}
|