UNPKG

@getsolara/solara.db

Version:

Optional database functionality for @getsolara/solara.js using quick.db

35 lines 1.78 kB
module.exports = { name: "$incVar", description: "Increments a numeric variable's value. Args: variableName;[increment=1];[scope=local]", takesBrackets: true, execute: async (context, args) => { if (!args[0]) return "[Error: $incVar requires a variableName]"; const varName = args[0].trim(); const increment = args[1] ? parseFloat(args[1]) : 1; const scope = args[2]?.trim().toLowerCase() || 'local'; if (isNaN(increment)) return "[Error: Invalid increment value for $incVar. Must be a number.]"; let currentValStr; if (scope === 'local') { currentValStr = context.localVariables?.get(varName); } else if (scope === 'global') { currentValStr = context.client.variables?.get(varName); } else { return "[Error: Invalid scope for $incVar. Use 'local' or 'global']"; } const currentVal = parseFloat(currentValStr || "0"); if (isNaN(currentVal)) { const targetMap = scope === 'local' ? context.localVariables : context.client.variables; const actualValue = targetMap ? targetMap.get(varName) : 'undefined'; return `[Error: Variable '${varName}' in $incVar is not a number (current value: '${actualValue}').]`; } const newVal = currentVal + increment; if (scope === 'local') { if (!context.localVariables) context.localVariables = new Map(); context.localVariables.set(varName, newVal.toString()); } else { if (!context.client.variables) context.client.variables = new Map(); context.client.variables.set(varName, newVal.toString()); } return newVal.toString(); } };