Experimental stuff. Albeit experimental, it should work.
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const client = require('..');
|
||||
const settings = client.db.get(`settings-${member.guild.id}`) || {};
|
||||
|
||||
client.on('guildMemberAdd', async member => {
|
||||
//auto kicker
|
||||
if (settings.newUserKicker === true) {
|
||||
if (member.user.createdTimestamp > Date.now() - (settings.newUserKickerThreshold * 24 * 60 * 60 * 1000)) {
|
||||
member.kick(`Account is too new.`).catch(() => {});
|
||||
console.log(`Automatically kicked ${member.user.tag} from ${member.guild.name} for being too new.`)
|
||||
} else {
|
||||
console.log(`User account age is above the threshold. Not kicking ${member.user.tag} from ${member.guild.name}.`)
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,117 @@
|
||||
const { ApplicationCommandType, ApplicationCommandOptionType, EmbedBuilder } = require('discord.js');
|
||||
const cfg = require('../../config/config.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'settings',
|
||||
description: 'Change the settings for the bot.',
|
||||
type: ApplicationCommandType.ChatInput,
|
||||
options: [
|
||||
{
|
||||
name: 'verification',
|
||||
description: 'Enable or disable, or change the settings of verification.',
|
||||
type: ApplicationCommandOptionType.Subcommand,
|
||||
options: [
|
||||
{
|
||||
name: 'enable-or-disable',
|
||||
description: 'Enable or disable verification.',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
choices: [
|
||||
{
|
||||
name: 'Enable',
|
||||
value: 'true'
|
||||
},
|
||||
{
|
||||
name: 'Disable',
|
||||
value: 'false'
|
||||
}
|
||||
],
|
||||
required: true
|
||||
},
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'new-user-kicker',
|
||||
description: 'Enable or disable, or change the settings of new user kicker.',
|
||||
type: ApplicationCommandOptionType.Subcommand,
|
||||
options: [
|
||||
{
|
||||
name: 'enable-or-disable',
|
||||
description: 'Enable or disable new user kicker.',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
choices: [
|
||||
{
|
||||
name: 'Enable',
|
||||
value: 'true'
|
||||
},
|
||||
{
|
||||
name: 'Disable',
|
||||
value: 'false'
|
||||
}
|
||||
],
|
||||
required: true
|
||||
},
|
||||
{
|
||||
name: 'threshold',
|
||||
description: 'Set the amount of days user account age to kick.',
|
||||
type: ApplicationCommandOptionType.Integer,
|
||||
required: false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'check',
|
||||
description: 'Check the current settings of the bot.',
|
||||
type: ApplicationCommandOptionType.Subcommand
|
||||
}
|
||||
],
|
||||
default_member_permissions: ["Administrator"],
|
||||
run: async (client, interaction) => {
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
const subcommand = interaction.options.getSubcommand();
|
||||
const guildId = interaction.guild.id;
|
||||
const settings = await client.db.get(`settings-${guildId}`) || {};
|
||||
|
||||
if (subcommand === 'verification') {
|
||||
const value = interaction.options.getString('enable-or-disable');
|
||||
client.db.set(`settings-${guildId}`, { verification: value });
|
||||
return interaction.editReply({ content: `Verification has been ${value ? 'enabled' : 'disabled'}.` });
|
||||
} else if (subcommand === 'new-user-kicker') {
|
||||
const value = interaction.options.getString('enable-or-disable');
|
||||
if (value === 'true') {
|
||||
const threshold = interaction.options.getInteger('threshold') || 7;
|
||||
client.db.set(`settings-${guildId}`, { newUserKicker: true });
|
||||
client.db.set(`settings-${guildId}.newUserKickerThreshold`, threshold);
|
||||
return interaction.editReply({ content: `New user kicker has been enabled with a threshold of ${threshold} days.` });
|
||||
} else {
|
||||
client.db.set(`settings-${guildId}`, { newUserKicker: false });
|
||||
client.db.delete(`settings-${guildId}.newUserKickerThreshold`);
|
||||
return interaction.editReply({ content: `New user kicker has been disabled.` });
|
||||
}
|
||||
} else if (subcommand === 'check') {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Bot Settings')
|
||||
.setColor('Green')
|
||||
.setTimestamp();
|
||||
|
||||
if (settings.verification === true) {
|
||||
embed.addFields({ name: 'Verification', value: 'Enabled' })
|
||||
} else {
|
||||
embed.addFields({ name: 'Verification', value: 'Disabled' })
|
||||
}
|
||||
|
||||
if (settings.newUserKicker === true) {
|
||||
embed.addFields(
|
||||
{
|
||||
name: 'New User Kicker',
|
||||
value: `Enabled with a threshold of ${settings.newUserKickerThreshold} days.`
|
||||
}
|
||||
)
|
||||
} else {
|
||||
embed.addFields({ name: 'New User Kicker', value: 'Disabled' })
|
||||
}
|
||||
|
||||
return interaction.editReply({ embeds: [embed] });
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user