ModuleBuilder/moduleWrappers/powercord/global/commands.js

33 lines
No EOL
1.2 KiB
JavaScript

const sendMessage = goosemodScope.webpackModules.findByProps('sendMessage', 'receiveMessage').sendMessage;
const getChannelId = goosemod.webpackModules.findByProps('getChannelId').getChannelId;
export const registerCommand = ({ command, alias, description, usage, executor }) => {
// TODO: implement alias
goosemodScope.patcher.commands.add(command, description,
async ( { args: [ { text } ] } ) => {
const out = await executor(text.split(' ')); // Run original executor func (await incase it's an async function)
if (!out.send) {
goosemodScope.patcher.internalMessage(out.result); // PC impl. sends internal message when out.send === false, so we also do the same via our previous Patcher API function
return;
}
// When send is true, we send it as a message via sendMessage
sendMessage(getChannelId(), {
content: out.result,
tts: false,
invalidEmojis: [],
validNonShortcutEmojis: []
});
}, [
{ type: 3, required: false, name: 'args', description: 'Arguments for PC command' } // Argument for any string for compat. with PC's classical commands
]);
};
export const unregisterCommand = (command) => {
goosemodScope.patcher.commands.remove(command);
};