Add support for sending anonymous snippets. Add snippetPrefixAnon option. Fixes #82
parent
9f72f81a73
commit
2f1b51d97a
|
@ -0,0 +1,11 @@
|
|||
exports.up = async function (knex, Promise) {
|
||||
await knex.schema.table('snippets', table => {
|
||||
table.dropColumn('is_anonymous');
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = async function(knex, Promise) {
|
||||
await knex.schema.table('snippets', table => {
|
||||
table.integer('is_anonymous').unsigned().notNullable();
|
||||
});
|
||||
};
|
|
@ -47,6 +47,7 @@ const defaultConfig = {
|
|||
|
||||
"prefix": "!",
|
||||
"snippetPrefix": "!!",
|
||||
"snippetPrefixAnon": "!!!",
|
||||
|
||||
"status": "Message me for help!",
|
||||
"responseMessage": "Thank you for your message! Our mod team will reply to you here as soon as possible.",
|
||||
|
|
|
@ -3,7 +3,6 @@ const utils = require("../utils");
|
|||
/**
|
||||
* @property {String} trigger
|
||||
* @property {String} body
|
||||
* @property {Number} is_anonymous
|
||||
* @property {String} created_by
|
||||
* @property {String} created_at
|
||||
*/
|
||||
|
|
|
@ -17,16 +17,14 @@ async function getSnippet(trigger) {
|
|||
/**
|
||||
* @param {String} trigger
|
||||
* @param {String} body
|
||||
* @param {Boolean} isAnonymous
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function addSnippet(trigger, body, isAnonymous = false, createdBy = 0) {
|
||||
async function addSnippet(trigger, body, createdBy = 0) {
|
||||
if (await getSnippet(trigger)) return;
|
||||
|
||||
return knex('snippets').insert({
|
||||
trigger,
|
||||
body,
|
||||
is_anonymous: isAnonymous ? 1 : 0,
|
||||
created_by: createdBy,
|
||||
created_at: moment.utc().format('YYYY-MM-DD HH:mm:ss')
|
||||
});
|
||||
|
|
|
@ -16,16 +16,38 @@ module.exports = bot => {
|
|||
|
||||
if (msg.author.bot) return;
|
||||
if (! msg.content) return;
|
||||
if (! msg.content.startsWith(config.snippetPrefix)) return;
|
||||
if (! msg.content.startsWith(config.snippetPrefix) && ! msg.content.startsWith(config.snippetPrefixAnon)) return;
|
||||
|
||||
let snippetPrefix, isAnonymous;
|
||||
|
||||
if (config.snippetPrefixAnon.length > config.snippetPrefix.length) {
|
||||
// Anonymous prefix is longer -> check it first
|
||||
if (msg.content.startsWith(config.snippetPrefixAnon)) {
|
||||
snippetPrefix = config.snippetPrefixAnon;
|
||||
isAnonymous = true;
|
||||
} else {
|
||||
snippetPrefix = config.snippetPrefix;
|
||||
isAnonymous = false;
|
||||
}
|
||||
} else {
|
||||
// Regular prefix is longer -> check it first
|
||||
if (msg.content.startsWith(config.snippetPrefix)) {
|
||||
snippetPrefix = config.snippetPrefix;
|
||||
isAnonymous = false;
|
||||
} else {
|
||||
snippetPrefix = config.snippetPrefixAnon;
|
||||
isAnonymous = true;
|
||||
}
|
||||
}
|
||||
|
||||
const thread = await threads.findByChannelId(msg.channel.id);
|
||||
if (! thread) return;
|
||||
|
||||
const trigger = msg.content.replace(config.snippetPrefix, '').toLowerCase();
|
||||
const trigger = msg.content.replace(snippetPrefix, '').toLowerCase();
|
||||
const snippet = await snippets.get(trigger);
|
||||
if (! snippet) return;
|
||||
|
||||
await thread.replyToUser(msg.member, snippet.body, [], !! snippet.is_anonymous);
|
||||
await thread.replyToUser(msg.member, snippet.body, [], isAnonymous);
|
||||
msg.delete();
|
||||
});
|
||||
|
||||
|
@ -43,12 +65,12 @@ module.exports = bot => {
|
|||
utils.postSystemMessageWithFallback(msg.channel, thread, `Snippet "${trigger}" already exists! You can edit or delete it with ${config.prefix}edit_snippet and ${config.prefix}delete_snippet respectively.`);
|
||||
} else {
|
||||
// If the snippet exists and we're NOT trying to create a new one, show info about the existing snippet
|
||||
utils.postSystemMessageWithFallback(msg.channel, thread, `\`${config.snippetPrefix}${trigger}\` replies ${snippet.is_anonymous ? 'anonymously ' : ''}with:\n${snippet.body}`);
|
||||
utils.postSystemMessageWithFallback(msg.channel, thread, `\`${config.snippetPrefix}${trigger}\` replies with:\n${snippet.body}`);
|
||||
}
|
||||
} else {
|
||||
if (text) {
|
||||
// If the snippet doesn't exist and the user wants to create it, create it
|
||||
await snippets.add(trigger, text, false);
|
||||
await snippets.add(trigger, text, msg.author.id);
|
||||
utils.postSystemMessageWithFallback(msg.channel, thread, `Snippet "${trigger}" created!`);
|
||||
} else {
|
||||
// If the snippet doesn't exist and the user isn't trying to create it, inform them how to create it
|
||||
|
@ -89,7 +111,7 @@ module.exports = bot => {
|
|||
}
|
||||
|
||||
await snippets.del(trigger);
|
||||
await snippets.add(trigger, text, snippet.isAnonymous);
|
||||
await snippets.add(trigger, text, msg.author.id);
|
||||
|
||||
utils.postSystemMessageWithFallback(msg.channel, thread, `Snippet "${trigger}" edited!`);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue