-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Port purge, ban and kick to new command architecture.
- Loading branch information
Showing
6 changed files
with
126 additions
and
149 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,73 @@ | ||
import { IveBotCommand } from '../imports/types' | ||
import { getInsult, getUser } from '../imports/tools' | ||
import { checkRolePosition } from '../imports/permissions' | ||
export { handleWarn } from './admin/warn' | ||
export { handleBan } from './admin/ban' | ||
|
||
export const handlePurge: IveBotCommand = (client) => ({ | ||
name: 'purge', | ||
opts: { | ||
description: 'Bulk delete a set of messages.', | ||
fullDescription: 'Bulk delete messages newer than 2 weeks.', | ||
usage: '/purge <number greater than 0>', | ||
guildOnly: true, | ||
requirements: { permissions: { 'manageMessages': true } }, | ||
permissionMessage: `**Thankfully, you don't have enough permissions for that, you ${getInsult()}.**` | ||
}, | ||
generator: (message, args) => { | ||
// Check if usage is correct. | ||
if ( | ||
isNaN(+args[0]) || args.length !== 1 || +args[0] === 0 | ||
) { return 'Correct usage: /purge <number greater than 0>' } | ||
// Get the list of messages. | ||
client.getMessages(message.channel.id, +args[0], message.id).then((res) => { | ||
res.push(message) | ||
client.deleteMessages(message.channel.id, res.map(i => i.id), 'Purge').catch(() => { | ||
client.createMessage( | ||
message.channel.id, 'Could not delete messages. Are the messages older than 2 weeks?' | ||
) | ||
}) | ||
}).catch(() => client.createMessage(message.channel.id, 'Could not retrieve messages.')) | ||
} | ||
}) | ||
|
||
export const handleKick: IveBotCommand = (client) => ({ | ||
name: 'kick', | ||
opts: { | ||
description: 'Kick someone.', | ||
fullDescription: 'Kick someone.', | ||
usage: '/kick <user by ID/username/mention> (reason)', | ||
guildOnly: true, | ||
requirements: { permissions: { 'kickMembers': true } }, | ||
permissionMessage: `**Thankfully, you don't have enough permissions for that, you ${getInsult()}.**` | ||
}, | ||
generator: (message, args) => { | ||
// Find the user ID. | ||
let user = getUser(message, args.shift()) | ||
if (!user) return `Specify a valid member of this guild, ${getInsult()}.` | ||
// If the user cannot kick the person.. | ||
if ( | ||
checkRolePosition(message.member.guild.members.find(i => i.user === user)) >= | ||
checkRolePosition(message.member) | ||
) { | ||
return `You cannot kick this person, you ${getInsult()}.` | ||
} | ||
// Now we kick the person. | ||
client.kickGuildMember(message.member.guild.id, user.id, args.join(' ')).then(() => { | ||
client.createMessage( | ||
message.channel.id, `**${user.username}#${user.discriminator}** has been kicked. **rip.**` | ||
) | ||
client.getDMChannel(user.id).then((c) => client.createMessage(c.id, args.length !== 0 | ||
? `You have been kicked from ${message.member.guild.name} for ${args.join(' ')}.` | ||
: `You have been kicked from ${message.member.guild.name}.` | ||
)) | ||
// WeChill | ||
if (message.member.guild.id === '402423671551164416') { | ||
client.createMessage('402437089557217290', args.length !== 0 | ||
? `**${user.username}#${user.discriminator}** has been kicked for **${args.join(' ')}**.` | ||
: `**${user.username}#${user.discriminator}** has been kicked for not staying chill >:L ` | ||
) | ||
} | ||
}) | ||
} | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
import { IveBotCommand } from '../../imports/types' | ||
import { checkRolePosition } from '../../imports/permissions' | ||
import { getInsult, getUser } from '../../imports/tools' | ||
|
||
export const handleBan: IveBotCommand = (client) => ({ | ||
name: 'ban', | ||
opts: { | ||
description: 'Ban someone.', | ||
fullDescription: 'Ban someone.', | ||
usage: '/ban <user by ID/username/mention> (reason)', | ||
aliases: ['banana', 'nuke'], | ||
guildOnly: true, | ||
requirements: { permissions: { 'banMembers': true } }, | ||
permissionMessage: `**Thankfully, you don't have enough permissions for that, you ${getInsult()}.**` | ||
}, | ||
generator: (message, args) => { | ||
// Find the user ID. | ||
let user = getUser(message, args.shift()) | ||
if (!user) return `Specify a valid member of this guild, ${getInsult()}.` | ||
// If the user cannot ban the person.. | ||
if ( | ||
checkRolePosition(message.member.guild.members.find(i => i.user === user)) >= | ||
checkRolePosition(message.member) | ||
) { | ||
return `You cannot ban this person, you ${getInsult()}.` | ||
} | ||
// Now we ban the person. | ||
client.banGuildMember(message.member.guild.id, user.id, 0, args.join(' ')).then(() => { | ||
client.createMessage( | ||
message.channel.id, `**${user.username}#${user.discriminator}** has been banned. **rip.**` | ||
) | ||
client.getDMChannel(user.id).then((c) => client.createMessage(c.id, args.length !== 0 | ||
? `You have been banned from ${message.member.guild.name} for ${args.join(' ')}.` | ||
: `You have been banned from ${message.member.guild.name}.` | ||
)) | ||
// WeChill | ||
if (message.member.guild.id === '402423671551164416') { | ||
client.createMessage('402437089557217290', args.length !== 0 | ||
? `**${user.username}#${user.discriminator}** has been banned for **${args.join(' ')}**.` | ||
: `**${user.username}#${user.discriminator}** has been banned for not staying chill >:L ` | ||
) | ||
} | ||
}) | ||
} | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,83 +1,5 @@ | ||
import { getArguments, getIdFromMention } from '../../imports/tools' | ||
import { checkRolePosition } from '../../imports/permissions' | ||
// Get types. | ||
import { client, event } from '../../imports/types' | ||
|
||
// Import export from sub-files. | ||
export { handleBan, handleUnban } from './ban' | ||
export { handleUnban } from './ban' | ||
export { handleWarnings, handleClearwarns, handleRemovewarn } from './warn' | ||
export { handleMute, handleUnmute } from './mute' | ||
export { handleGiverole, handleTakerole } from './roles' | ||
|
||
// Purge! | ||
export function handlePurge (client: client, event: event, sendResponse: Function, message: string) { | ||
// Check user for permissions. | ||
if (!event.member.permission.has('manageMessages')) { | ||
sendResponse('**Thankfully, you don\'t have enough permissions for that, you ungrateful bastard.**') | ||
return | ||
} else if ( | ||
isNaN(+getArguments(message)) || !getArguments(message) || +getArguments(message) === 0 | ||
) { sendResponse('Correct usage: /purge (channel) <number greater than 0>'); return } | ||
// Get the list of messages. | ||
client.getMessages(event.channel.id, +getArguments(message), event.id).then((res) => { | ||
res.push(event) | ||
client.deleteMessages(event.channel.id, res.map(e => e.id)).catch(() => { | ||
sendResponse(`Could not delete messages. Are the messages older than 2 weeks?`) | ||
}) | ||
}).catch(() => sendResponse('Could not retrieve messages.')) | ||
} | ||
|
||
// Kick! | ||
export function handleKick (client: client, event: event, sendResponse: Function, message: string) { | ||
// Check user for permissions. | ||
if (!event.member.permission.has('kickMembers')) { | ||
sendResponse('**Thankfully, you don\'t have enough permissions for that, you ungrateful bastard.**') | ||
return | ||
} | ||
// Check for valid user. | ||
let userID = getIdFromMention(getArguments(message).split(' ')[0]) | ||
const ifUserId = getArguments(message).split(' ')[0] | ||
if (event.member.guild.members.find(a => a.id === ifUserId)) userID = ifUserId | ||
else if ( | ||
event.member.guild.members.find(a => a.username.toLowerCase() === ifUserId.toLowerCase()) | ||
) userID = event.member.guild.members.find(a => a.username.toLowerCase() === ifUserId.toLowerCase()).id | ||
// eslint-disable-next-line no-unused-vars | ||
const member = event.member.guild.members.find(a => a.id === userID) | ||
if (!member) { sendResponse('Please specify a valid user.'); return } | ||
// Get information about user. | ||
const serverName = event.member.guild.name | ||
if (checkRolePosition(member) >= checkRolePosition(event.member)) { | ||
sendResponse('You cannot kick this person! People nowadays.'); return | ||
} | ||
// and.. cut. | ||
let kicked = true | ||
client.kickGuildMember(event.member.guild.id, userID, getArguments(getArguments(message))) | ||
.then(() => sendResponse(`**${member.username}#${member.discriminator}** has been kicked. **rip.**`)) | ||
.catch(() => { sendResponse('I can\'t kick that person.'); kicked = false }) | ||
// DM the poor user. | ||
setTimeout(() => { | ||
if (!kicked) return | ||
if (getArguments(getArguments(message)).trim()) { | ||
client.getDMChannel(userID).then((c) => client.createMessage( | ||
c.id, `You have been kicked from ${serverName} for ${getArguments(getArguments(message))}.` | ||
)) | ||
// WeChill | ||
if (event.member.guild.id === '402423671551164416') { | ||
client.createMessage( | ||
'402437089557217290', | ||
`**${member.username}#${member.discriminator}** has been kicked for **${getArguments(getArguments(message))}**.` | ||
) | ||
} | ||
} else { | ||
// WeChill | ||
if (event.member.guild.id === '402423671551164416') { | ||
client.createMessage( | ||
'402437089557217290', | ||
`**${member.username}#${member.discriminator}** has been kicked for not staying chill >:L ` | ||
) | ||
} | ||
client.getDMChannel(userID) | ||
.then((c) => client.createMessage(c.id, `You have been kicked from ${serverName}.`)) | ||
} | ||
}, 1000) | ||
} |