Spaces:
Paused
Paused
| const axios = require('axios') | |
| const { writeFileSync, unlinkSync } = require('fs') | |
| const path = require('path') | |
| const { | |
| bot, | |
| parseGistUrls, | |
| getPlugin, | |
| setPlugin, | |
| pluginsList, | |
| delPlugin, | |
| removePlugin, | |
| installPlugin, | |
| // genButtonMessage, | |
| // PLATFORM, | |
| } = require('../lib/') | |
| bot( | |
| { | |
| pattern: 'plugin ?(.*)', | |
| desc: 'Install External plugins', | |
| type: 'plugin', | |
| }, | |
| async (message, match) => { | |
| match = match || message.reply_message.text | |
| if (!match && match !== 'list') | |
| return await message.send( | |
| '> *Example :*\n- plugin url (_a gist url, which contain plugin code_)\n- plugin list (_list all plugins with the url_)' | |
| ) | |
| if (match == 'list') { | |
| const plugins = await getPlugin(message.id) | |
| if (!plugins) return await message.send(`*Plugins not installed.*`) | |
| let msg = '' | |
| plugins.map(({ name, url }) => { | |
| msg += `${name} : ${url}\n` | |
| }) | |
| return await message.send('```' + msg + '```') | |
| } | |
| const isValidUrl = parseGistUrls(match) | |
| if (!isValidUrl || isValidUrl.length < 1) { | |
| const { url } = await getPlugin(message.id, match) | |
| if (url) return await message.send(url, { quoted: message.data }) | |
| } | |
| if (!isValidUrl) return await message.send('*Give me valid plugin url | plugin_name*') | |
| let msg = '' | |
| for (const url of isValidUrl) { | |
| try { | |
| const res = await axios.get(url) // Use axios.get for making the GET request | |
| if (res.status === 200) { | |
| // In axios, the status is 'res.status' instead of 'res.statusCode' | |
| let plugin_name = /pattern: ["'](.*)["'],/g.exec(res.data) // Access response data with 'res.data' | |
| plugin_name = plugin_name[1].split(' ')[0] | |
| const pluginPath = path.join(__dirname, '../eplugins/' + message.id + plugin_name + '.js') | |
| writeFileSync(pluginPath, res.data) | |
| try { | |
| installPlugin(pluginPath, message.id) | |
| } catch (e) { | |
| await message.send(e.stack, { quoted: message.quoted }) | |
| return unlinkSync(pluginPath) | |
| } | |
| await setPlugin(plugin_name, url, message.id) | |
| msg += `${pluginsList(res.data).join(',')}\n` | |
| } | |
| } catch (error) { | |
| await message.send(`${error.message}\n${url}`) | |
| } | |
| } | |
| await message.send(`_Newly installed plugins are : ${msg.trim()}_`) | |
| } | |
| ) | |
| bot( | |
| { | |
| pattern: 'remove ?(.*)', | |
| desc: 'Delete External Plugins', | |
| type: 'plugin', | |
| }, | |
| async (message, match) => { | |
| if (!match) | |
| return await message.send( | |
| '> *Example :*\n- remove mforward (_name of the plugin file, check plugin list_)\n- remove all (_removes all plugins in plugin list_)' | |
| ) | |
| // const buttons = [{ text: 'REBOOT', id: 'reboot' }] | |
| // if (PLATFORM == 'heroku') buttons.push({ text: 'RESTART', id: 'restart' }) | |
| if (match == 'all') { | |
| const plugins = await getPlugin(message.id) | |
| for (const plugin of plugins) { | |
| try { | |
| await delPlugin(plugin.name, message.id) | |
| removePlugin(plugin.name, message.id) | |
| } catch (error) {} | |
| } | |
| } else { | |
| const isDeleted = await delPlugin(match, message.id) | |
| if (!isDeleted) return await message.send(`*Plugin ${match} not found*`) | |
| removePlugin(match, message.id) | |
| } | |
| return await message.send(`_removed plugins_`) | |
| // return await message.send( | |
| // await genButtonMessage(buttons, '_Plugin Deleted_'), | |
| // {}, | |
| // 'button' | |
| // ) | |
| } | |
| ) | |