Move plugin loading to its own file. Define plugin API more explicitly.
parent
45e314b942
commit
2ea858daac
|
@ -67,7 +67,7 @@ class Thread {
|
|||
let savedAttachment;
|
||||
|
||||
await Promise.all([
|
||||
attachments.attachmentToFile(attachment).then(file => {
|
||||
attachments.attachmentToDiscordFileObject(attachment).then(file => {
|
||||
files.push(file);
|
||||
}),
|
||||
attachments.saveAttachment(attachment).then(result => {
|
||||
|
@ -146,7 +146,7 @@ class Thread {
|
|||
logContent += formatted; // Logs always contain the link
|
||||
|
||||
if (config.relaySmallAttachmentsAsAttachments && attachment.size <= 1024 * 1024 * 2) {
|
||||
const file = await attachments.attachmentToFile(attachment);
|
||||
const file = await attachments.attachmentToDiscordFileObject(attachment);
|
||||
attachmentFiles.push(file);
|
||||
} else {
|
||||
threadContent += formatted;
|
||||
|
|
|
@ -128,7 +128,7 @@ async function saveDiscordAttachment(attachment) {
|
|||
throw new Error('Attachment storage channel must be a text channel!');
|
||||
}
|
||||
|
||||
const file = await attachmentToFile(attachment);
|
||||
const file = await attachmentToDiscordFileObject(attachment);
|
||||
const savedAttachment = await createDiscordAttachmentMessage(attachmentChannel, file);
|
||||
if (! savedAttachment) return getErrorResult();
|
||||
|
||||
|
@ -156,7 +156,7 @@ async function createDiscordAttachmentMessage(channel, file, tries = 0) {
|
|||
* @param {Object} attachment
|
||||
* @returns {Promise<{file, name: string}>}
|
||||
*/
|
||||
async function attachmentToFile(attachment) {
|
||||
async function attachmentToDiscordFileObject(attachment) {
|
||||
const downloadResult = await downloadAttachment(attachment);
|
||||
const data = await readFile(downloadResult.path);
|
||||
downloadResult.cleanup();
|
||||
|
@ -195,7 +195,8 @@ attachmentStorageTypes.discord = saveDiscordAttachment;
|
|||
|
||||
module.exports = {
|
||||
getLocalAttachmentPath,
|
||||
attachmentToFile,
|
||||
attachmentToDiscordFileObject,
|
||||
saveAttachment,
|
||||
addStorageType
|
||||
addStorageType,
|
||||
downloadAttachment
|
||||
};
|
||||
|
|
13
src/main.js
13
src/main.js
|
@ -7,11 +7,11 @@ const knex = require('./knex');
|
|||
const {messageQueue} = require('./queue');
|
||||
const utils = require('./utils');
|
||||
const { createCommandManager } = require('./commands');
|
||||
const { getPluginAPI, loadPlugin } = require('./plugins');
|
||||
|
||||
const blocked = require('./data/blocked');
|
||||
const threads = require('./data/threads');
|
||||
const updates = require('./data/updates');
|
||||
const attachments = require('./data/attachments');
|
||||
|
||||
const reply = require('./modules/reply');
|
||||
const close = require('./modules/close');
|
||||
|
@ -265,15 +265,8 @@ function initPlugins() {
|
|||
}
|
||||
}
|
||||
|
||||
plugins.forEach(pluginFn => {
|
||||
pluginFn({
|
||||
bot,
|
||||
knex,
|
||||
config,
|
||||
commands,
|
||||
attachments,
|
||||
});
|
||||
});
|
||||
const pluginApi = getPluginAPI({ bot, knex, config, commands });
|
||||
plugins.forEach(pluginFn => loadPlugin(pluginFn, pluginApi));
|
||||
|
||||
console.log(`Loaded ${plugins.length} plugins (${builtInPlugins.length} built-in plugins, ${plugins.length - builtInPlugins.length} external plugins)`);
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
const attachments = require('./data/attachments');
|
||||
|
||||
module.exports = {
|
||||
getPluginAPI({ bot, knex, config, commands }) {
|
||||
return {
|
||||
bot,
|
||||
knex,
|
||||
config,
|
||||
commands: {
|
||||
manager: commands.manager,
|
||||
addGlobalCommand: commands.addGlobalCommand,
|
||||
addInboxServerCommand: commands.addInboxServerCommand,
|
||||
addInboxThreadCommand: commands.addInboxThreadCommand,
|
||||
addAlias: commands.addAlias
|
||||
},
|
||||
attachments: {
|
||||
addStorageType: attachments.addStorageType,
|
||||
downloadAttachment: attachments.downloadAttachment
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
loadPlugin(plugin, api) {
|
||||
plugin(api);
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue