@getsolara/solara.db
Version:
Optional database functionality for @getsolara/solara.js using quick.db
33 lines • 1.73 kB
JavaScript
module.exports = {
name: "$setUserVar",
description: "Sets a variable associated with a specific user (optionally per-server). Args: varName;value;userID;[scope=global]",
takesBrackets: true,
execute: async (context, args) => {
if (!context.client.db) {
return "[Error: $setUserVar requires database features to be enabled. Ensure @getsolara/solara.db is installed and configured correctly in SolaraClient options.]";
}
if (args.length < 3) return "[Error: $setUserVar requires varName, value, and userID]";
const varName = args[0].trim();
const value = args[1];
const userId = args[2].trim();
const scope = args[3]?.trim().toLowerCase() || 'global';
if (!varName) return "[Error: Variable name cannot be empty for $setUserVar]";
if (!/^\d{17,19}$/.test(userId)) return "[Error: Invalid userID provided to $setUserVar]";
let dbKey;
if (scope === 'local') {
if (!context.guild) return "[Error: Local scope for $setUserVar requires a guild context]";
dbKey = `userGuildVars_${context.guild.id}_${userId}_${varName}`;
} else if (scope === 'global') {
dbKey = `userVars_${userId}_${varName}`;
} else {
return "[Error: Invalid scope for $setUserVar. Use 'global' or 'local'.]";
}
try {
await context.client.db.set(dbKey, value);
return "";
} catch (e) {
console.error(`Solara.db Error ($setUserVar): Failed to set variable '${dbKey}'. Error: ${e.message}`);
return `[DB Error setting user variable '${varName}': ${e.message}]`;
}
}
};