diff --git a/commands/togglestatuses.js b/commands/togglestatuses.js new file mode 100644 index 0000000..a23580a --- /dev/null +++ b/commands/togglestatuses.js @@ -0,0 +1,21 @@ +const Discord = require('discord.js'); +const GuildSettings = require('../models/guild'); + +module.exports = { + name: "togglestatuses", + aliases: ['ts', 'tsw', 'togglestatuswarnings', 'togglestatus', 'statustoggle', 'statusestoggle'], + help: new Discord.MessageEmbed() + .setTitle("Help -> Server Status-Toggling") + .setDescription("Disables or enables the warning that appears when you ping someone that has a status set.") + .addField("Syntax", "`togglestatuses [c]` (add `c` to the end of the message if you want to check if they're enabled or not.)"), + async execute(message, msg, args, cmd, prefix, mention, client) { + if (!message.guild) {return message.reply('You must be in a server to use this command.');} + let tg = await GuildSettings.findOne({gid: message.guild.id}); + if (!message.member.permissions.has('ADMINISTRATOR') && (tg && tg.staffrole.length && !message.member.roles.cache.has(tg.staffrole))) {return message.reply("You don't have permissions to use this command in your server.");} + if (['c', 'check', 'v', 'view'].includes(args[0].toLowerCase())) {return message.channel.send(`I ${tg && !tg.nostatus ? 'will' : 'will not'} send a warning when pinging a member with a status.`);} + if (!tg) {tg = new GuildSettings({gid: message.guild.id});} + tg.nostatus = !tg.nostatus; + tg.save(); + return message.channel.send(`I ${!tg.nostatus ? 'will' : 'will not'} send a warning when pinging a member with a status.`); + } +}; \ No newline at end of file diff --git a/models/guild.js b/models/guild.js index 6efcad8..d8cd5db 100644 --- a/models/guild.js +++ b/models/guild.js @@ -14,7 +14,8 @@ const guildSchema = new mongoose.Schema({ cooldowns: {type: Boolean, default: false}, levelmessage: {type: String, default: '**{{u}}** has reached level **{{l}}**! :tada:'}, levelmessages: {type: Boolean, default: false}, - prefix: {type: String, default: ''} + prefix: {type: String, default: ''}, + nostatus: {type: Boolean, default: false} }); module.exports = mongoose.model("guild", guildSchema); \ No newline at end of file diff --git a/models/user.js b/models/user.js index 5562f2c..fb9122c 100644 --- a/models/user.js +++ b/models/user.js @@ -6,6 +6,8 @@ const UserSchema = new mongoose.Schema({ statusmsg: {type: String, default: ''}, statustype: {type: String, default: ''}, statusclearmode: {type: String, default: 'auto'}, + statusclearat: {type: Date, default: null}, + statussetat: {type: Date, default: null}, support: {type: Boolean, default: false}, staff: {type: Boolean, default: false}, admin: {type: Boolean, default: false}, diff --git a/template.js b/template.js index 07ca6b2..a16aa35 100644 --- a/template.js +++ b/template.js @@ -6,7 +6,7 @@ module.exports = { help: new Discord.MessageEmbed() .setTitle("Help -> ") .setDescription("") - .addField("Syntax", ""), + .addField("Syntax", "``"), async execute(message, msg, args, cmd, prefix, mention, client) { if (!args.length) {return message.channel.send(`Syntax: \`${prefix}\``);} } diff --git a/util/mention.js b/util/mention.js index 6adb3a2..dbae079 100644 --- a/util/mention.js +++ b/util/mention.js @@ -1,7 +1,10 @@ const mongooes= require('mongoose'); const UserData = require('../models/user'); +const GuildSettings = require('../models/guild'); module.exports = async(message, msg, args, cmd, prefix, mention, client) => { let tu = await UserData.findOne({uid: mention.id}); + let tg = message.guild ? await GuildSettings.findOne({gid: message.guild.id}) : null; + if (tg && tg.nostatus) {return;} if (tu) {if (tu.statusmsg.length) {return message.reply(`That user ${tu.statustype === 'dnd' ? 'wishes not to be disturbed' : 'is AFK'}. Reason: ${tu.statusmsg}`);}} }; \ No newline at end of file