diff --git a/commands/util/clearsetting.js b/commands/util/clearsetting.js index 3748e191..f2e59a64 100644 --- a/commands/util/clearsetting.js +++ b/commands/util/clearsetting.js @@ -6,16 +6,16 @@ module.exports = class ClearSettingCommand extends Command { name: 'clear-setting', group: 'util', memberName: 'clear-setting', - description: 'Removes a custom-set Mod Channel, Member Channel, Staff Role, or Single Role.', + description: 'Removes a custom-set Mod Channel, Member Channel, Member Message, Staff Role, or Single Role.', guildOnly: true, args: [ { key: 'setting', - prompt: 'What setting do you want to clear? `modLog`, `memberLog`, `staffRole`, or `singleRole`?', + prompt: 'What setting do you want to clear? `modLog`, `memberLog`, `joinMsg`, `leaveMsg`, `staffRole`, or `singleRole`?', type: 'string', validate: setting => { - if(['modLog', 'memberLog', 'staffRole', 'singleRole'].includes(setting)) return true; - return 'Please enter either `modLog`, `memberLog`, `staffRole`, or `singleRole`.'; + if(['modLog', 'memberLog', 'joinMsg', 'leaveMsg', 'staffRole', 'singleRole'].includes(setting)) return true; + return 'Please enter either `modLog`, `memberLog`, `joinMsg`, `leaveMsg`, `staffRole`, or `singleRole`.'; } } ] diff --git a/commands/util/membermsg.js b/commands/util/membermsg.js new file mode 100644 index 00000000..7d573d5c --- /dev/null +++ b/commands/util/membermsg.js @@ -0,0 +1,52 @@ +const { Command } = require('discord.js-commando'); + +module.exports = class MemberMsgCommand extends Command { + constructor(client) { + super(client, { + name: 'member-message', + aliases: [ + 'member-msg' + ], + group: 'util', + memberName: 'member-message', + description: 'Sets the message for either join/leave logs to use.', + details: '**Placeholders:** : Username, : Server Name, : A Mention of the User', + guildOnly: true, + args: [ + { + key: 'type', + prompt: 'Which message would you like to change? Please enter either `joinMsg` or `leaveMsg`.', + type: 'string', + validate: type => { + if(['joinMsg', 'leaveMsg'].includes(type)) return true; + return 'Please enter either `joinMsg` or `leaveMsg`.'; + } + }, + { + key: 'message', + prompt: 'What should be sent to the channel? Use , , and as placeholders.', + type: 'string', + validate: message => { + if(message.length < 1000) return true; + return 'Invalid Message. Message must be under 1000 characters.'; + } + } + ] + }); + } + + hasPermission(msg) { + return msg.member.hasPermission('ADMINISTRATOR'); + } + + run(msg, args) { + const { type, message } = args; + if(type === 'joinMsg') { + msg.guild.settings.set('joinMsg', message); + return msg.say(`Join Message set to "${message}".`); + } else if(type === 'leaveMsg') { + msg.guild.settings.set('leaveMsg', message); + return msg.say(`Leave Message set to "${message}".`); + } + } +}; diff --git a/html/carbonfeat.html b/html/carbonfeat.html index b14233ed..40fbf1d8 100644 --- a/html/carbonfeat.html +++ b/html/carbonfeat.html @@ -49,7 +49,7 @@
  • Binary, Morse, Pirate, and Temmie Translators!
  • Cowsay, Embed, Reverse, Zalgo, and Upside Down Text!
  • Customizable Prefix!
  • -
  • Member Join/Leave Logging to a Customizable Channel!
  • +
  • Member Join/Leave Logging to a Customizable Channel, with a Customizable Message!
  • Customizable Staff Role able to use Mod Commands!
  • Optional "Single Role Mode" where only one role can use the bot's commands!
  • And so so so much more!
  • diff --git a/html/carbonuse.html b/html/carbonuse.html index 67108372..a20b0599 100644 --- a/html/carbonuse.html +++ b/html/carbonuse.html @@ -12,7 +12,7 @@

    Notes:

    1. Moderation Commands Require a Channel set with x;modchannel to send Ban/Softban/Kick/Unban/Warn Logs
    2. -
    3. To use Member Join/Leave Logging, set a channel with x;memberchannel
    4. +
    5. To use Member Join/Leave Logging, set a channel with x;memberchannel, a custom message can be set with x;membermsg
    6. You can set a special role that is able to use Moderation commands (excluding lockdown) with x;staffrole
    7. Use x;help to View a Command List
    8. Visit my Home Server for more support, or for updates, or if you just want to hang out.
    9. diff --git a/html/discordbots.html b/html/discordbots.html index dc59299b..fa89e1c5 100644 --- a/html/discordbots.html +++ b/html/discordbots.html @@ -46,7 +46,7 @@
    10. Binary, Morse, Pirate, and Temmie Translators!
    11. Cowsay, Embed, Reverse, Zalgo, and Upside Down Text!
    12. Customizable Prefix!
    13. -
    14. Member Join/Leave Logging to a Customizable Channel!
    15. +
    16. Member Join/Leave Logging to a Customizable Channel, with a Customizable Message!
    17. Customizable Staff Role able to use Mod Commands!
    18. Optional "Single Role Mode" where only one role can use the bot's commands!
    19. And so so so much more!
    20. @@ -54,7 +54,7 @@

      Notes:

      1. Moderation Commands Require a Channel set with x;modchannel to send Ban/Softban/Kick/Unban/Warn Logs
      2. -
      3. To use Member Join/Leave Logging, set a channel with x;memberchannel
      4. +
      5. To use Member Join/Leave Logging, set a channel with x;memberchannel, a custom message can be set with x;membermsg
      6. You can set a special role that is able to use Moderation commands (excluding lockdown) with x;staffrole
      7. Use x;help to View a Command List
      8. Visit my Home Server for more support, or for updates, or if you just want to hang out.
      9. diff --git a/index.js b/index.js index 298f0148..269b37fa 100644 --- a/index.js +++ b/index.js @@ -49,14 +49,22 @@ client.on('guildMemberAdd', (member) => { const channel = member.guild.channels.get(member.guild.settings.get('memberLog')); if(!channel) return; if(!channel.permissionsFor(client.user).has('SEND_MESSAGES')) return; - channel.send(`Welcome ${member.user.username}!`); + const msg = member.guild.settings.get('joinMsg', 'Welcome !') + .replace(/()/gi, member.user.username) + .replace(/()/gi, member.guild.name) + .replace(/()/gi, member); + channel.send(msg); }); client.on('guildMemberRemove', (member) => { const channel = member.guild.channels.get(member.guild.settings.get('memberLog')); if(!channel) return; if(!channel.permissionsFor(client.user).has('SEND_MESSAGES')) return; - channel.send(`Bye ${member.user.username}...`); + const msg = member.guild.settings.get('leaveMsg', 'Bye ...') + .replace(/()/gi, member.user.username) + .replace(/()/gi, member.guild.name) + .replace(/()/gi, member); + channel.send(msg); }); client.on('guildCreate', async(guild) => { diff --git a/package.json b/package.json index b8cee2e2..07251626 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiaobot", - "version": "18.5.0", + "version": "18.6.0", "description": "A Discord Bot", "main": "shardingmanager.js", "scripts": {