aboutsummaryrefslogtreecommitdiff
path: root/src/modules/greeting.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/greeting.js')
-rw-r--r--src/modules/greeting.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/modules/greeting.js b/src/modules/greeting.js
new file mode 100644
index 0000000..f85bde9
--- /dev/null
+++ b/src/modules/greeting.js
@@ -0,0 +1,37 @@
+const path = require('path');
+const fs = require('fs');
+const config = require('../config');
+const utils = require('../utils');
+
+module.exports = ({ bot }) => {
+ if (! config.enableGreeting) return;
+
+ bot.on('guildMemberAdd', (guild, member) => {
+ const guildGreeting = config.guildGreetings[guild.id];
+ if (! guildGreeting || (! guildGreeting.message && ! guildGreeting.attachment)) return;
+
+ function sendGreeting(message, file) {
+ bot.getDMChannel(member.id).then(channel => {
+ if (! channel) return;
+
+ channel.createMessage(message || '', file)
+ .catch(e => {
+ if (e.code === 50007) return;
+ throw e;
+ });
+ });
+ }
+
+ const greetingMessage = utils.readMultilineConfigValue(guildGreeting.message);
+
+ if (guildGreeting.attachment) {
+ const filename = path.basename(guildGreeting.attachment);
+ fs.readFile(guildGreeting.attachment, (err, data) => {
+ const file = {file: data, name: filename};
+ sendGreeting(greetingMessage, file);
+ });
+ } else {
+ sendGreeting(greetingMessage);
+ }
+ });
+};