/
softban.js
117 lines (117 loc) · 5.86 KB
/
softban.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
module.exports = {
meta: {
help: 'Softban a user.',
usage: '@user OR <userid> [reason]',
module: 'Admin',
level: 0,
alias: ['messageban'],
noDM: true,
permAddons: ['Ban Members']
},
fn: function (msg, suffix) {
const bot = global.bot
if (!msg.member.permission.json.banMembers) {
msg.channel.createMessage(`<@${msg.author.id}>, Sorry but you do not have permission to ban members.`)
} else if (!msg.channel.guild.members.get(bot.user.id).permission.json.banMembers) {
msg.channel.createMessage(`<@${msg.author.id}>, Sorry but I do not have the required permission to ban members.`)
} else if (!suffix) {
msg.channel.createMessage('You need to provide an ID to ban!')
} else if (msg.mentions.filter(m => m.id !== bot.user.id).length > 0) {
msg.channel.createMessage('Please wait...').then((m) => {
const membersToBan = msg.mentions.filter(m => m.id !== bot.user.id)
const banMembers = { success: [], error: [] }
let reasonWords = []
suffix.split(' ').map((id) => {
if (id.startsWith('<@')) {
} else {
reasonWords.push(id)
}
})
const reason = reasonWords.length > 0 ? reasonWords.join(' ') : 'No reason provided.'
membersToBan.map((user) => {
msg.channel.guild.banMember(user.id, 1, `${msg.author.username}#${msg.author.discriminator} used softban for: ${reason}`).then(() => {
msg.channel.guild.unbanMember(user.id, 'Automatic unban from softban.').then(() => {
banMembers.success.push(`\`${user.username}#${user.discriminator}\``)
if (banMembers.success.length + banMembers.error.length === membersToBan.length) {
let resp = ''
if (banMembers.success.length !== 0) resp += `Softbanned the following: ${banMembers.success.join(', ')}\n`
if (banMembers.error.length !== 0) resp += `Could not softban the following: ${banMembers.error.join(', ')}\n`
resp += `Reason provided by user: ${reason}`
m.edit(resp)
}
}).catch(() => {
banMembers.error.push(`\`${user.username}#${user.discriminator}\``)
if (membersToBan.length === banMembers.error.length) {
let resp = ''
if (banMembers.success.length !== 0) resp += `Softbanned the following: ${banMembers.success.join(', ')}\n`
if (banMembers.error.length !== 0) resp += `Could not softban the following: ${banMembers.error.join(', ')}\n`
resp += `Reason provided by user: ${reason}`
m.edit(resp)
}
})
}).catch(() => {
banMembers.error.push(`\`${user.username}#${user.discriminator}\``)
if (membersToBan.length === banMembers.error.length) {
let resp = ''
if (banMembers.success.length !== 0) resp += `Softbanned the following: ${banMembers.success.join(', ')}\n`
if (banMembers.error.length !== 0) resp += `Could not softban the following: ${banMembers.error.join(', ')}\n`
resp += `Reason provided by user: ${reason}`
m.edit(resp)
}
})
})
})
} else {
msg.channel.createMessage(`<@${msg.author.id}>, Please wait...`).then((m) => {
let banMembers = { success: [], error: [] }
let idArray = []
let reasonWords = []
suffix.split(' ').map((id) => {
if (isNaN(id) || id.length < 16) {
reasonWords.push(id)
} else {
idArray.push(id)
}
})
let reason = reasonWords.length > 0 ? reasonWords.join(' ') : 'No reason provided.'
idArray.map((id) => {
let member = msg.channel.guild.members.get(id)
if (!member) {
m.edit('A provided ID isn\'t a member of this guild!')
return
}
msg.channel.guild.banMember(id, 1, `${msg.author.username}#${msg.author.discriminator} used softban for: ${reason}`).then(() => {
member.unbanMember(id, 'Automatic unban from softban').then(() => {
banMembers.success.push(`\`${member.username}#${member.discriminator}\``)
if (banMembers.success.length + banMembers.error.length === idArray.length) {
let resp = ''
if (banMembers.success.length !== 0) resp += `Softbanned the following: ${banMembers.success.join(', ')}\n`
if (banMembers.error.length !== 0) resp += `Could not softban the following: ${banMembers.error.join(', ')}\n`
resp += `Reason provided by user: ${reason}`
m.edit(resp)
}
}).catch(() => {
banMembers.error.push(`\`${member.username}#${member.discriminator}\``)
if (banMembers.success.length + banMembers.error.length === idArray.length) {
let resp = ''
if (banMembers.success.length !== 0) resp += `Softbanned the following: ${banMembers.success.join(', ')}\n`
if (banMembers.error.length !== 0) resp += `Could not softban the following: ${banMembers.error.join(', ')}\n`
resp += `Reason provided by user: ${reason}`
m.edit(resp)
}
})
}).catch(() => {
banMembers.error.push(`\`${member.username}#${member.discriminator}\``)
if (banMembers.success.length + banMembers.error.length === idArray.length) {
let resp = ''
if (banMembers.success.length !== 0) resp += `Softbanned the following: ${banMembers.success.join(', ')}\n`
if (banMembers.error.length !== 0) resp += `Could not softban the following: ${banMembers.error.join(', ')}\n`
resp += `Reason provided by user: ${reason}`
m.edit(resp)
}
})
})
})
}
}
}