Skip to content

Instantly share code, notes, and snippets.

@TheOnlyArtz
Created August 29, 2017 10:11
Show Gist options
  • Save TheOnlyArtz/7d8b7996207c71b78bdc3a27cfcc470c to your computer and use it in GitHub Desktop.
Save TheOnlyArtz/7d8b7996207c71b78bdc3a27cfcc470c to your computer and use it in GitHub Desktop.
const ms = require('ms');
const moment = require('moment');
function punishment(client) {
setInterval(async () => {
let arr = await r.table('timers').filter({userID : "NONE"}).run();
if (arr[0].inPunishQueue[0]) {
for (var i = 0; i < arr[0].inPunishQueue.length; i++) {
let guildID = arr[0].inPunishQueue[i]['guildID'];
let userID = arr[0].inPunishQueue[i]['userID'];
let usersUnix = await r.table('timers').filter({
guildID : guildID,
userID : userID
}).run()
if (usersUnix[0].mute &&(usersUnix[0].mute < Date.now())) {
logger.info('Removed new muted role [auto]');
let muteRole = client.guilds.get(guildID).roles.find('name', 'may-muted');
await client.guilds.get(guildID).members.get(userID).removeRole(muteRole);
let p = arr[0].inPunishQueue;
function findInd(element) {
return element.userID === userID
&& element.guildID === guildID
&& element.punish === 'mute'
}
p.findIndex(findInd)
let appendToArray = (table, uArray) => r.table(table)
.filter({userID : "NONE"})
.update(object => ({ [uArray]: object(uArray)
.default([]).deleteAt(p.findIndex(findInd)) }))
.run();
appendToArray('timers', 'inPunishQueue');
if (usersUnix[0].ban) {
await r.table("timers")
.filter({guildID : msg.guild.id, userID : msg.author.id})
.update({mute : null}).run();
} else {
//Else, delete the document
await r.table('timers').filter({
guildID : guildID,
userID : userID
}).delete().run();
}
}
if (usersUnix[0].ban && (usersUnix[0].ban < Date.now())) {
logger.info('Unbanned new user [auto]');
await client.guilds.get(guildID).unban(userID).catch(logger.error)
let p = arr[0].inPunishQueue;
function findInd(element) {
return element.userID === userID
&& element.guildID === guildID
&& element.punish === 'mute'
}
p.findIndex(findInd);
let appendToArray = (table, uArray) => r.table(table)
.filter({userID : "NONE"})
.update(object => ({ [uArray]: object(uArray)
.default([]).deleteAt( p.findIndex(findInd)) }))
.run();
appendToArray('timers', 'inPunishQueue');
if (usersUnix[0].mute) {
await r.table("timers")
.filter({guildID : msg.guild.id, userID : msg.author.id})
.update({ban : null}).run();
} else {
//Else, delete the document
await r.table('timers').filter({
guildID : guildID,
userID : userID
}).delete().run();
}
}
}
}
}, ms('10s'));
}
module.exports = punishment;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment