Add guildGreetings config option
parent
1f370769ac
commit
18f3da1247
|
@ -79,6 +79,7 @@ These go in `config.json`. See also `config.example.json`.
|
||||||
|enableGreeting|false|Set to true to send a welcome message to new main guild members. Requires `mainGuildId` to be set.|
|
|enableGreeting|false|Set to true to send a welcome message to new main guild members. Requires `mainGuildId` to be set.|
|
||||||
|greetingAttachment|None|Path to an image or other attachment to send along with the greeting|
|
|greetingAttachment|None|Path to an image or other attachment to send along with the greeting|
|
||||||
|greetingMessage|None|Text content of the welcome message|
|
|greetingMessage|None|Text content of the welcome message|
|
||||||
|
|guildGreetings|None|When using multiple mainGuildIds, this option allows you to configure greetings on a per-server basis. The syntax is an object with the guild ID as the key, and another object with `message` and `attachment` properties as the value (identical to greetingMessage and greetingAttachment)|
|
||||||
|ignoreAccidentalThreads|false|If set to true, the bot attempts to ignore common "accidental" messages that would start a new thread, such as "ok", "thanks", etc.|
|
|ignoreAccidentalThreads|false|If set to true, the bot attempts to ignore common "accidental" messages that would start a new thread, such as "ok", "thanks", etc.|
|
||||||
|inboxServerPermission|None|Permission required to use bot commands on the inbox server|
|
|inboxServerPermission|None|Permission required to use bot commands on the inbox server|
|
||||||
|timeOnServerDeniedMessage|"You haven't been a member of the server for long enough to contact modmail."|See `requiredTimeOnServer` below|
|
|timeOnServerDeniedMessage|"You haven't been a member of the server for long enough to contact modmail."|See `requiredTimeOnServer` below|
|
||||||
|
|
|
@ -75,6 +75,8 @@ const defaultConfig = {
|
||||||
"greetingMessage": null,
|
"greetingMessage": null,
|
||||||
"greetingAttachment": null,
|
"greetingAttachment": null,
|
||||||
|
|
||||||
|
"guildGreetings": {},
|
||||||
|
|
||||||
"requiredAccountAge": null, // In hours
|
"requiredAccountAge": null, // In hours
|
||||||
"accountAgeDeniedMessage": "Your Discord account is not old enough to contact modmail.",
|
"accountAgeDeniedMessage": "Your Discord account is not old enough to contact modmail.",
|
||||||
|
|
||||||
|
@ -160,6 +162,20 @@ if (! Array.isArray(finalConfig['inboxServerPermission'])) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Move greetingMessage/greetingAttachment to the guildGreetings object internally
|
||||||
|
// Or, in other words, if greetingMessage and/or greetingAttachment is set, it is applied for all servers that don't
|
||||||
|
// already have something set up in guildGreetings. This retains backwards compatibility while allowing you to override
|
||||||
|
// greetings for specific servers in guildGreetings.
|
||||||
|
if (finalConfig.greetingMessage || finalConfig.greetingAttachment) {
|
||||||
|
for (const guildId of finalConfig.mainGuildId) {
|
||||||
|
if (finalConfig.guildGreetings[guildId]) continue;
|
||||||
|
finalConfig.guildGreetings[guildId] = {
|
||||||
|
message: finalConfig.greetingMessage,
|
||||||
|
message: finalConfig.greetingMessage
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// newThreadCategoryId is syntactic sugar for categoryAutomation.newThread
|
// newThreadCategoryId is syntactic sugar for categoryAutomation.newThread
|
||||||
if (finalConfig.newThreadCategoryId) {
|
if (finalConfig.newThreadCategoryId) {
|
||||||
finalConfig.categoryAutomation.newThread = finalConfig.newThreadCategoryId;
|
finalConfig.categoryAutomation.newThread = finalConfig.newThreadCategoryId;
|
||||||
|
|
|
@ -107,7 +107,7 @@ bot.on('messageUpdate', async (msg, oldMessage) => {
|
||||||
if (msg.channel instanceof Eris.PrivateChannel) {
|
if (msg.channel instanceof Eris.PrivateChannel) {
|
||||||
const thread = await threads.findOpenThreadByUserId(msg.author.id);
|
const thread = await threads.findOpenThreadByUserId(msg.author.id);
|
||||||
if (! thread) return;
|
if (! thread) return;
|
||||||
|
|
||||||
const editMessage = utils.disableLinkPreviews(`**The user edited their message:**\n\`B:\` ${oldContent}\n\`A:\` ${newContent}`);
|
const editMessage = utils.disableLinkPreviews(`**The user edited their message:**\n\`B:\` ${oldContent}\n\`A:\` ${newContent}`);
|
||||||
thread.postSystemMessage(editMessage);
|
thread.postSystemMessage(editMessage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,16 +5,15 @@ const config = require('../config');
|
||||||
module.exports = bot => {
|
module.exports = bot => {
|
||||||
if (! config.enableGreeting) return;
|
if (! config.enableGreeting) return;
|
||||||
|
|
||||||
const greetingGuilds = config.mainGuildId;
|
|
||||||
|
|
||||||
bot.on('guildMemberAdd', (guild, member) => {
|
bot.on('guildMemberAdd', (guild, member) => {
|
||||||
if (! greetingGuilds.includes(guild.id)) return;
|
const guildGreeting = config.guildGreetings[guild.id];
|
||||||
|
if (! guildGreeting || (! guildGreeting.message && ! guildGreeting.attachment)) return;
|
||||||
|
|
||||||
function sendGreeting(file) {
|
function sendGreeting(message, file) {
|
||||||
bot.getDMChannel(member.id).then(channel => {
|
bot.getDMChannel(member.id).then(channel => {
|
||||||
if (! channel) return;
|
if (! channel) return;
|
||||||
|
|
||||||
channel.createMessage(config.greetingMessage || '', file)
|
channel.createMessage(message || '', file)
|
||||||
.catch(e => {
|
.catch(e => {
|
||||||
if (e.code === 50007) return;
|
if (e.code === 50007) return;
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -22,14 +21,14 @@ module.exports = bot => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.greetingAttachment) {
|
if (guildGreeting.attachment) {
|
||||||
const filename = path.basename(config.greetingAttachment);
|
const filename = path.basename(guildGreeting.attachment);
|
||||||
fs.readFile(config.greetingAttachment, (err, data) => {
|
fs.readFile(guildGreeting.attachment, (err, data) => {
|
||||||
const file = {file: data, name: filename};
|
const file = {file: data, name: filename};
|
||||||
sendGreeting(file);
|
sendGreeting(guildGreeting.message, file);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
sendGreeting();
|
sendGreeting(guildGreeting.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue