memberMsg

This commit is contained in:
Daniel Odendahl Jr
2017-05-07 20:29:20 +00:00
parent ff30e857bf
commit 9f09e23a07
7 changed files with 71 additions and 11 deletions
+4 -4
View File
@@ -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`.';
}
}
]
+52
View File
@@ -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:** <user>: Username, <server>: Server Name, <mention>: 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 <user>, <server>, and <mention> 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}".`);
}
}
};
+1 -1
View File
@@ -49,7 +49,7 @@
<li>Binary, Morse, Pirate, and Temmie Translators!</li>
<li>Cowsay, Embed, Reverse, Zalgo, and Upside Down Text!</li>
<li>Customizable Prefix!</li>
<li>Member Join/Leave Logging to a Customizable Channel!</li>
<li>Member Join/Leave Logging to a Customizable Channel, with a Customizable Message!</li>
<li>Customizable Staff Role able to use Mod Commands!</li>
<li>Optional "Single Role Mode" where only one role can use the bot's commands!</li>
<li>And so so so much more!</li>
+1 -1
View File
@@ -12,7 +12,7 @@
<h2>Notes:</h2>
<ol>
<li>Moderation Commands Require a Channel set with x;modchannel to send Ban/Softban/Kick/Unban/Warn Logs</li>
<li>To use Member Join/Leave Logging, set a channel with x;memberchannel</li>
<li>To use Member Join/Leave Logging, set a channel with x;memberchannel, a custom message can be set with x;membermsg</li>
<li>You can set a special role that is able to use Moderation commands (excluding lockdown) with x;staffrole</li>
<li>Use x;help to View a Command List</li>
<li>Visit my <a href="https://discord.gg/fqQF8mc">Home Server</a> for more support, or for updates, or if you just want to hang out.</li>
+2 -2
View File
@@ -46,7 +46,7 @@
<li>Binary, Morse, Pirate, and Temmie Translators!</li>
<li>Cowsay, Embed, Reverse, Zalgo, and Upside Down Text!</li>
<li>Customizable Prefix!</li>
<li>Member Join/Leave Logging to a Customizable Channel!</li>
<li>Member Join/Leave Logging to a Customizable Channel, with a Customizable Message!</li>
<li>Customizable Staff Role able to use Mod Commands!</li>
<li>Optional "Single Role Mode" where only one role can use the bot's commands!</li>
<li>And so so so much more!</li>
@@ -54,7 +54,7 @@
<h2>Notes:</h2>
<ol>
<li>Moderation Commands Require a Channel set with x;modchannel to send Ban/Softban/Kick/Unban/Warn Logs</li>
<li>To use Member Join/Leave Logging, set a channel with x;memberchannel</li>
<li>To use Member Join/Leave Logging, set a channel with x;memberchannel, a custom message can be set with x;membermsg</li>
<li>You can set a special role that is able to use Moderation commands (excluding lockdown) with x;staffrole</li>
<li>Use x;help to View a Command List</li>
<li>Visit my <a href="https://discord.gg/fqQF8mc">Home Server</a> for more support, or for updates, or if you just want to hang out.</li>
+10 -2
View File
@@ -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 <user>!')
.replace(/(<user>)/gi, member.user.username)
.replace(/(<server>)/gi, member.guild.name)
.replace(/(<mention>)/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 <user>...')
.replace(/(<user>)/gi, member.user.username)
.replace(/(<server>)/gi, member.guild.name)
.replace(/(<mention>)/gi, member);
channel.send(msg);
});
client.on('guildCreate', async(guild) => {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "xiaobot",
"version": "18.5.0",
"version": "18.6.0",
"description": "A Discord Bot",
"main": "shardingmanager.js",
"scripts": {