/* * Vencord, a modification for Discord's desktop app * Copyright (c) 2022 Vendicated and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ import { Devs } from "@utils/constants"; import definePlugin from "@utils/types"; export default definePlugin({ name: "CommandsAPI", authors: [Devs.Arjix], description: "Api required by anything that uses commands", patches: [ // obtain BUILT_IN_COMMANDS instance { find: '"giphy","tenor"', replacement: [ { // Matches BUILT_IN_COMMANDS. This is not exported so this is // the only way. _init() just returns the same object to make the // patch simpler // textCommands = builtInCommands.filter(...) match: /(?<=\w=)(\w)(\.filter\(.{0,30}giphy)/, replace: "Vencord.Api.Commands._init($1)$2", } ], }, // command error handling { find: "Unexpected value for option", replacement: { // return [2, cmd.execute(args, ctx)] match: /,(.{1,2})\.execute\((.{1,2}),(.{1,2})\)]/, replace: (_, cmd, args, ctx) => `,Vencord.Api.Commands._handleCommand(${cmd}, ${args}, ${ctx})]` } }, // Show plugin name instead of "Built-In" { find: ".source,children", replacement: { // ...children: p?.name match: /(?<=:(.{1,3})\.displayDescription\}.{0,200}\.source,children:)[^}]+/, replace: "$1.plugin||($&)" } } ], });