Periodically remove all messages from certain users in multiple channels. Useful to clean up messages from other bots that you don't control for example.
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
// Update to your user and channel
const minHoursAgo = 8
const user_ids = ['12345', '12345'];
const channel_ids = ['12345', '12345'];
const now = new Date()
const user_id_index = new Set(user_ids)
for (let channel_id of channel_ids) {
// Get channel messages
const messages = await lib.discord.channels['@0.2.0'].messages.list({
channel_id,
limit: 100,
});
// Filter ones from the users that aren't too new or too old
const userMessageIds = messages
.filter((msg) => user_id_index.has(msg.author.id))
.filter((msg) => {
const created = new Date(msg.timestamp)
const hoursAgo = (now - created) / 1000 / 60 / 60
const daysAgo = hoursAgo / 24
const isRecent = hoursAgo < minHoursAgo // Only delete older messages
const isTooOld = daysAgo > 14 // Can't delete messages that are too old
return !(isRecent || isTooOld)
})
.map((msg) => msg.id);
console.log(`Deleting ${userMessageIds.length} messages from channel ${channel_id}`);
// Purge the messages
if (userMessageIds.length === 1)
await lib.discord.channels['@0.2.0'].messages.destroy({
channel_id, message_id: userMessageIds[0],
});
else if (userMessageIds.length > 1)
await lib.discord.channels['@0.2.0'].messages.bulkDelete({
channel_id,
messages: userMessageIds,
});
}