/* * Copyright (C) 2016-2020 phantombot.github.io/PhantomBot * * 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 . */ /** * commandRegister.js * * Register and keep track of commands. * * NOTE: You will have to register ANY command you implement! * The commandEvent will not get fired to your module if the registry does not know about it! */ (function() { var commands = {}, aliases = {}; /* * @function registerChatCommand * * @param {String} script * @param {String} command * @param {String} groupId */ function registerChatCommand(script, command, groupId) { // If groupId is undefined set it to 7 (viewer). groupId = (groupId === undefined ? 7 : groupId); if (commandExists(command)) { return; } // This is for the panel commands. if (groupId == 30) { if ($.inidb.exists('permcom', command)) { $.inidb.del('permcom', command); } commands[command] = { groupId: groupId, script: script, subcommands: {} }; return; } // Handle disabled commands. if ($.inidb.exists('disabledCommands', command)) { $.inidb.set('tempDisabledCommandScript', command, script); return; } // Get and set the command permission. groupId = $.getSetIniDbNumber('permcom', command, groupId); commands[command] = { groupId: groupId, script: script, subcommands: {} }; } /* * @function registerChatSubcommand * * @param {String} command * @param {String} subcommand * @param {String} groupId */ function registerChatSubcommand(command, subcommand, groupId) { // If groupId is undefined set it to 7 (viewer). groupId = (groupId === undefined ? 7 : groupId); if (!commandExists(command) || subCommandExists(command, subcommand)) { return; } // Get and set the command permission. groupId = $.getSetIniDbNumber('permcom', (command + ' ' + subcommand), groupId); commands[command].subcommands[subcommand] = { groupId: groupId } } /* * @function registerChatAlias * * @param {String} alias */ function registerChatAlias(alias) { if (!aliasExists(alias)) { aliases[alias] = true; } } /* * @function unregisterChatCommand * * @param {String} command */ function unregisterChatCommand(command) { if (commandExists(command)) { delete commands[command]; delete aliases[command]; } $.inidb.del('permcom', command); $.inidb.del('pricecom', command); $.inidb.del('cooldown', command); $.inidb.del('paycom', command); $.inidb.del('disabledCommands', command); } /* * @function tempUnRegisterChatCommand * * @param {String} command */ function tempUnRegisterChatCommand(command) { $.inidb.set('tempDisabledCommandScript', command, commands[command].script); if (commandExists(command)) { delete commands[command]; delete aliases[command]; } } /* * @function unregisterChatSubcommand * * @param {String} command * @param {String} subcommand */ function unregisterChatSubcommand(command, subcommand) { if (subCommandExists(command, subcommand)) { delete commands[command].subcommands[subcommand]; } $.inidb.del('permcom', command + ' ' + subcommand); $.inidb.del('pricecom', command + ' ' + subcommand); } /* * @function getCommandScript * * @param {String} command * @return {String} */ function getCommandScript(command) { if (commands[command] === undefined) { return "Undefined"; } return commands[command].script; } /* * @function commandExists * * @param {String} command * @return {Boolean} */ function commandExists(command) { return (commands[command] !== undefined); } /* * @function aliasExists * * @param {String} command */ function aliasExists(alias) { return (aliases[alias] !== undefined); } /* * @function subCommandExists * * @param {String} command * @param {String} subcommand * @return {Boolean} */ function subCommandExists(command, subcommand) { if (commandExists(command)) { return (commands[command].subcommands[subcommand] !== undefined); } return false; } /* * @function getCommandGroup * * @param {String} command * @return {Number} */ function getCommandGroup(command) { if (commandExists(command)) { return commands[command].groupId; } return 7; } /* * @function getCommandGroupName * * @param {String} command * @return {String} */ function getCommandGroupName(command) { var group = ''; if (commandExists(command)) { if (commands[command].groupId == 0) { group = 'Caster'; } else if (commands[command].groupId == 1) { group = 'Administrator'; } else if (commands[command].groupId == 2) { group = 'Moderator'; } else if (commands[command].groupId == 3) { group = 'Subscriber'; } else if (commands[command].groupId == 4) { group = 'Donator'; } else if (commands[command].groupId == 5) { group = 'VIP'; } else if (commands[command].groupId == 6) { group = 'Regular'; } else if (commands[command].groupId == 7) { group = 'Viewer'; } return group; } return 'Viewer'; } /* * @function getSubcommandGroup * * @param {String} command * @param {String} subcommand * @return {Number} */ function getSubcommandGroup(command, subcommand) { if (commandExists(command)) { if (subCommandExists(command, subcommand)) { return commands[command].subcommands[subcommand].groupId; } return getCommandGroup(command); } return 7; } /* * @function getSubCommandGroupName * * @param {String} command * @param {String} subcommand * @return {String} */ function getSubCommandGroupName(command, subcommand) { var group = ''; if (subCommandExists(command, subcommand)) { if (commands[command].subcommands[subcommand].groupId == 0) { group = 'Caster'; } else if (commands[command].subcommands[subcommand].groupId == 1) { group = 'Administrator'; } else if (commands[command].subcommands[subcommand].groupId == 2) { group = 'Moderator'; } else if (commands[command].subcommands[subcommand].groupId == 3) { group = 'Subscriber'; } else if (commands[command].subcommands[subcommand].groupId == 4) { group = 'Donator'; } else if (commands[command].subcommands[subcommand].groupId == 5) { group = 'VIP'; } else if (commands[command].subcommands[subcommand].groupId == 6) { group = 'Regular'; } else if (commands[command].subcommands[subcommand].groupId == 7) { group = 'Viewer'; } return group; } return 'Viewer'; } /* * @function updateCommandGroup * * @param {String} command * @param {Number} groupId */ function updateCommandGroup(command, groupId) { if (commandExists(command)) { commands[command].groupId = groupId; } } /* * @function updateSubcommandGroup * * @param {String} command * @param {String} subcommand * @param {Number} groupId */ function updateSubcommandGroup(command, subcommand, groupId) { if (subCommandExists(command, subcommand)) { commands[command].subcommands[subcommand].groupId = groupId; } } /* * @function getSubCommandFromArguments * * @param {String} command * @param {String[]} args */ function getSubCommandFromArguments(command, args) { if (!commandExists(command) || args[0] === undefined) { return ''; } else { var subCommand = args[0].toLowerCase(); if (subCommandExists(command, subCommand)) { return subCommand; } return ''; } } /** Export functions to API */ $.registerChatCommand = registerChatCommand; $.registerChatSubcommand = registerChatSubcommand; $.unregisterChatCommand = unregisterChatCommand; $.unregisterChatSubcommand = unregisterChatSubcommand; $.commandExists = commandExists; $.subCommandExists = subCommandExists; $.getCommandGroup = getCommandGroup; $.getCommandGroupName = getCommandGroupName; $.getSubcommandGroup = getSubcommandGroup; $.getSubCommandGroupName = getSubCommandGroupName; $.updateCommandGroup = updateCommandGroup; $.updateSubcommandGroup = updateSubcommandGroup; $.getCommandScript = getCommandScript; $.aliasExists = aliasExists; $.registerChatAlias = registerChatAlias; $.tempUnRegisterChatCommand = tempUnRegisterChatCommand; $.getSubCommandFromArguments = getSubCommandFromArguments; })();