Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/twlite/discord-raidmod
Simple, beginner friendly and easy-to-use discord.js spam moderation framework
https://github.com/twlite/discord-raidmod
Last synced: about 1 month ago
JSON representation
Simple, beginner friendly and easy-to-use discord.js spam moderation framework
- Host: GitHub
- URL: https://github.com/twlite/discord-raidmod
- Owner: twlite
- Created: 2022-02-22T20:32:54.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-03-21T02:39:14.000Z (over 2 years ago)
- Last Synced: 2024-10-03T20:45:56.751Z (about 1 month ago)
- Language: TypeScript
- Homepage: https://npm.im/discord-raidmod
- Size: 26.4 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Discord Raid Moderator
Simple, beginner friendly and easy-to-use discord.js moderation framework
> **NOTE:** This library does not take any moderation actions on its own, rather it emits different type of events which needs to be handled by the user.
# Features
* Simple
* Easy to use
* Made for beginners
* Does not inject anything to the client
* Customizable# Spam Detection
* User spam detection
* Triggers when user spams in a channel
* Cross message spam detection
* Triggers when user spams same content in multiple channels
* Message content spam detection
* Triggers when the same message content is posted in a channel multiple times
* Fast join detection
* Triggers when fast member join is detected
* Fast joiners spam detection
* Triggers when fast joiners start spamming
* New members spam detection
* Triggers when new members (new account) start spamming
* Mentions spam detection
* Triggers when message exceeds specified mentions threshold# Status
* Development (Expect breaking changes)
# Example
```js
import { Client, Intents } from "discord.js";
import { DiscordRaidMod, createConfig } from "discord-raidmod";const client = new Client({
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MEMBERS,
Intents.FLAGS.GUILD_MESSAGES,
Intents.FLAGS.GUILD_BANS
]
});
const raidMod = new DiscordRaidMod(client, createConfig({
// ignore messages from mods (bots are ignored by default)
filterMessages: (message) => !message.member.permissions.has("MANAGE_MESSAGES"),
// other than that, default config is good enough to handle spams
// but you can update them as needed ;)
}));// when spam event is triggered,
// we get array of messages that were flagged as spam messages
// and spam type
raidMod.on("spam", async (messages, spamType) => {
const spammers = [...new Set(messages.map(m => m.author.id))];for (const spammer of spammers) {
if (!messages[0].guild.members.cache.get(spammer)?.bannable) continue;
await messages[0].guild.bans.create(spammer, {
days: 1,
reason: "Spam detection"
})
.then((banInfo) => {
console.log(`[${spamType}] Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo} for spam`);
})
.catch(() => {});
}
});// when spamMentions event is triggered,
// we get the message that triggered this event,
// and collection of member mentions
raidMod.on("spamMentions", async (message, mentions) => {
if (!message.member.bannable) return;
await message.guild.bans.create(message.member, {
days: 1,
reason: "Mention spam"
})
.then((banInfo) => {
console.log(`Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo} for spamming ${mentions.size} mentions`);
})
.catch(() => {});
});await client.login("TOKEN");
```