Move stuff

This commit is contained in:
dragonfire535
2017-10-16 13:24:04 -04:00
parent 3ae764aaf5
commit f3ad3588bc
4 changed files with 64 additions and 37 deletions
-12
View File
@@ -1,17 +1,5 @@
const { ShardingManager } = require('discord.js');
const path = require('path');
const { postStats } = require('./util/Util');
const { TOKEN } = process.env;
const manager = new ShardingManager(path.join(__dirname, 'XiaoBot.js'), { token: TOKEN });
manager.spawn(undefined, 1000);
setInterval(async () => {
if (!manager.shards.has(0)) return;
try {
const guilds = await manager.fetchClientValues('guilds.size');
const count = guilds.reduce((prev, val) => prev + val, 0);
await postStats(count, await manager.shards.get(0).fetchClientValue('user.id'));
} catch (err) {
console.error(`[STATS] Failed to post stats. ${err}`);
}
}, 300000);
+5 -10
View File
@@ -1,6 +1,6 @@
const { TOKEN, OWNERS, COMMAND_PREFIX, INVITE } = process.env;
const path = require('path');
const { CommandoClient } = require('discord.js-commando');
const CommandoClient = require('./structures/CommandoClient');
const client = new CommandoClient({
commandPrefix: COMMAND_PREFIX,
owner: OWNERS.split(','),
@@ -59,10 +59,9 @@ client.on('ready', () => {
if (whitelist.includes(guild.id)) continue;
if (guild.members.filter(member => member.user.bot).size > 25) {
try {
console.log(`[LEAVE] Leaving guild ${guild.name}. (${guild.id})`);
await guild.leave();
} catch (err) {
console.error(`[LEAVE] Failed to leave guild ${guild.name}. (${guild.id}) ${err}`);
console.error(`[LEAVE] Failed to leave guild ${guild.name}. (${guild.id})`, err);
}
}
}
@@ -84,10 +83,9 @@ client.on('guildCreate', async guild => {
if (whitelist.includes(guild.id)) return;
if (guild.members.filter(member => member.user.bot).size > 25) {
try {
console.log(`[LEAVE] Leaving guild ${guild.name}. (${guild.id})`);
await guild.leave();
} catch (err) {
console.error(`[LEAVE] Failed to leave guild ${guild.name}. (${guild.id}) ${err}`);
console.error(`[LEAVE] Failed to leave guild ${guild.name}. (${guild.id})`, err);
}
}
});
@@ -98,13 +96,10 @@ client.dispatcher.addInhibitor(msg => {
return false;
});
client.setInterval(() => {
console.log(`[RESTART] Shard ${client.shard.id} restarted!`);
process.exit(0);
}, 8.64e+7);
client.login(TOKEN);
setInterval(() => process.exit(0), 8.64e+7);
process.on('unhandledRejection', err => {
console.error('[FATAL] Unhandled Promise Rejection.', err);
process.exit(1);
+59
View File
@@ -0,0 +1,59 @@
const { Client } = require('discord.js-commando');
const snekfetch = require('snekfetch');
const { DBOTS_KEY, DBOTSORG_KEY } = process.env;
class CommandoClient extends Client {
constructor(options) {
super(options);
Object.defineProperty(this, 'dBotsKey', { value: DBOTS_KEY });
Object.defineProperty(this, 'dBotsOrgKey', { value: DBOTSORG_KEY });
this.on('guildCreate', () => {
this.dBots();
this.dBotsOrg();
});
this.on('guildDelete', () => {
this.dBots();
this.dBotsOrg();
});
}
async dBots() {
if (!this.dBotsKey) return null;
try {
const { body } = await snekfetch
.post(`https://bots.discord.pw/api/bots/${this.user.id}/stats`)
.set({ Authorization: this.dBotsKey })
.send({
shard_id: this.shard ? this.shard.id : 0,
shard_count: this.client.options.shardCount || 1,
server_count: this.guilds.size
});
return body;
} catch (err) {
this.emit('error', 'Failed to post to Discord Bots', err);
return null;
}
}
async dBotsOrg() {
if (!this.dBotsOrgKey) return null;
try {
const { body } = await snekfetch
.post(`https://discordbots.org/api/bots/${this.user.id}/stats`)
.set({ Authorization: this.dBotsOrgKey })
.send({
shard_id: this.shard ? this.shard.id : 0,
shard_count: this.client.options.shardCount || 1,
server_count: this.guilds.size
});
return body;
} catch (err) {
this.emit('error', 'Failed to post to Discord Bots Org', err);
return null;
}
}
}
module.exports = CommandoClient;
-15
View File
@@ -1,21 +1,6 @@
const snekfetch = require('snekfetch');
const { promisify } = require('util');
const { DBOTS_KEY, DBOTSORG_KEY } = process.env;
class Util {
static postStats(count, id) {
snekfetch
.post(`https://bots.discord.pw/api/bots/${id}/stats`)
.set({ Authorization: DBOTS_KEY })
.send({ server_count: count })
.catch(err => console.error(`[DBOTS] Failed to post to Discord Bots. ${err}`));
snekfetch
.post(`https://discordbots.org/api/bots/${id}/stats`)
.set({ Authorization: DBOTSORG_KEY })
.send({ server_count: count })
.catch(err => console.error(`[DBOTSORG] Failed to post to Discord Bots Org. ${err}`));
}
static wait(time) {
return promisify(setTimeout)(time);
}