/
clear.js
55 lines (43 loc) · 1.7 KB
/
clear.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
module.exports = async (d) => {
const data = d.util.aoiFunc(d);
const { code } = d.command;
if (data.err) return d.error(data.err);
let [channelID = d.channel.id, amount, filters = "everyone", returnCount = "false" ] = data.inside.splits;
if (isNaN(amount) || amount < 1) return d.aoiError.fnError(d, "custom", { inside: data.inside }, "Amount" );
amount = Number(amount)
if (amount > 100) amount = 100
const channel = await d.util.getChannel(d, channelID);
if (!channel) return d.aoiError.fnError(d, "channel", { inside: data.inside });
let messages = await channel.messages
.fetch({ limit: amount, cache: true })
.catch((err) => {
d.aoiError.fnError(d, "custom", {}, "Failed To Fetch Messages With Reason: " + err);
});
filters = filters.toLowerCase().split(",");
messages = [...messages.values()]
.filter((x) => {
if (filters.includes("")) return true;
if (filters.includes("everyone")) return true;
if (filters.includes("unpinned") && !x.pinned) return true;
if (filters.includes("bots") && x.author?.bot) return true;
if (
filters.some(
(filter) =>
filter.startsWith("user:") && x.author?.id === filter.split(":")[1]
)
)
return true;
return false;
})
.slice(0, amount);
if (!messages.length) {
messages = [...messages.values()].slice(0, amount);
}
let result = await channel.bulkDelete(messages, true).catch((err) => {
d.aoiError.fnError(d, "custom" ,{}, "Failed To Delete Message With Reason: " + err);
});
result = returnCount === "true" ? messages.length : null;
return {
code: d.util.setCode({ function: d.func, code, inside: data.inside, result }),
};
};