Add option for minimum account age for contacting modmail
Saw this on the to-do list and decided to give it a shot. Tested and works without issues for me. I advise testing yourself before merging, there's always a chance I missed something since your code is quite extended to work through.master
parent
6f327b7456
commit
9c1a5863f5
|
@ -84,3 +84,5 @@ These go in `config.json`. See also `config.example.json`.
|
|||
|typingProxy|false|If enabled, any time a user is typing to modmail in their DMs, the modmail thread will show the bot as "typing"|
|
||||
|typingProxyReverse|false|If enabled, any time a moderator is typing in a modmail thread, the user will see the bot "typing" in their DMs|
|
||||
|mentionRole|"here"|Role that is mentioned when new threads are created or the bot is mentioned. Accepted values are "here", "everyone", or a role id as a string. Set to null to disable these pings entirely.|
|
||||
|userOlderThan|null|The amount of days the user's account has to exist. If the user's account is not old enough, the bot will not make a new thread and reply to the user with the message defined in `userDeniedMessage`.|
|
||||
|userDeniedMessage|"Your Discord account is not old enough to contact modmail."|The message to reply to a user when their account is not old enough to contact modmail.|
|
|
@ -65,6 +65,9 @@ const defaultConfig = {
|
|||
"greetingMessage": null,
|
||||
"greetingAttachment": null,
|
||||
|
||||
"userOlderThan": null, // Amount of days
|
||||
"userDeniedMessage": "Your Discord account is not old enough to contact modmail.",
|
||||
|
||||
"relaySmallAttachmentsAsAttachments": false,
|
||||
|
||||
"port": 8890,
|
||||
|
|
|
@ -56,6 +56,18 @@ async function createNewThreadForUser(user, quiet = false) {
|
|||
throw new Error('Attempted to create a new thread for a user with an existing open thread!');
|
||||
}
|
||||
|
||||
// Check the config for a requirement of account age to contact modmail,
|
||||
// if the account is too young, return an optional message without making a new thread
|
||||
if (config.userOlderThan) {
|
||||
if (user.createdAt > moment() - config.userOlderThan * 86400000){
|
||||
if (config.userDeniedMessage) {
|
||||
const privateChannel = await user.getDMChannel();
|
||||
await privateChannel.createMessage(config.userDeniedMessage);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Use the user's name+discrim for the thread channel's name
|
||||
// Channel names are particularly picky about what characters they allow, so we gotta do some clean-up
|
||||
let cleanName = transliterate.slugify(user.username);
|
||||
|
|
|
@ -86,7 +86,7 @@ bot.on('messageCreate', async msg => {
|
|||
thread = await threads.createNewThreadForUser(msg.author);
|
||||
}
|
||||
|
||||
await thread.receiveUserReply(msg);
|
||||
if (thread) await thread.receiveUserReply(msg);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue