add alias rename command
This commit is contained in:
parent
d677fc6a0c
commit
f2ed8a4f16
|
@ -100,6 +100,13 @@ The Artificer comes with a few supplemental commands to the main rolling command
|
||||||
* `[[ra delete-all [aliasName] [verificationCode?]`
|
* `[[ra delete-all [aliasName] [verificationCode?]`
|
||||||
* `[[ra guild delete-all [aliasName] [verificationCode?]`
|
* `[[ra guild delete-all [aliasName] [verificationCode?]`
|
||||||
* Deletes all aliases from your account or the guild you are in. Can be run without a verification code to get the needed code for deletion.
|
* Deletes all aliases from your account or the guild you are in. Can be run without a verification code to get the needed code for deletion.
|
||||||
|
* `[[ra clone [aliasName]`
|
||||||
|
* Copies the specified alias from your account to the guild you are in.
|
||||||
|
* `[[ra guild clone [aliasName]`
|
||||||
|
* Copies the specified alias from the guild you are in to your account.
|
||||||
|
* `[[ra rename [oldAliasName] [newAliasName]`
|
||||||
|
* `[[ra guild rename [oldAliasName] [newAliasName]`
|
||||||
|
* Renames the specified alias for your account or the guild you are in.
|
||||||
* `[[ra [aliasName] [yVars?...]`
|
* `[[ra [aliasName] [yVars?...]`
|
||||||
* `[[ra run [aliasName] [yVars?...]`
|
* `[[ra run [aliasName] [yVars?...]`
|
||||||
* Runs the desired personal alias with the specified yVars (if any are needed). If the alias is not found on your account, it will check the guild aliases and use a match from there if one exists.
|
* Runs the desired personal alias with the specified yVars (if any are needed). If the alias is not found on your account, it will check the guild aliases and use a match from there if one exists.
|
||||||
|
|
|
@ -39,7 +39,6 @@ export const alias = (message: DiscordenoMessage, argSpaces: string[]) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Makes sure the user is authenticated to run the API command
|
|
||||||
switch (aliasArg) {
|
switch (aliasArg) {
|
||||||
case 'help':
|
case 'help':
|
||||||
case 'h':
|
case 'h':
|
||||||
|
@ -76,6 +75,9 @@ export const alias = (message: DiscordenoMessage, argSpaces: string[]) => {
|
||||||
case 'copy':
|
case 'copy':
|
||||||
aliasCommands.clone(message, guildMode, argSpaces);
|
aliasCommands.clone(message, guildMode, argSpaces);
|
||||||
break;
|
break;
|
||||||
|
case 'rename':
|
||||||
|
aliasCommands.rename(message, guildMode, argSpaces);
|
||||||
|
break;
|
||||||
case 'run':
|
case 'run':
|
||||||
case 'execute':
|
case 'execute':
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -3,6 +3,7 @@ import { clone } from './clone.ts';
|
||||||
import { deleteAll, deleteOne } from './aliasDelete.ts';
|
import { deleteAll, deleteOne } from './aliasDelete.ts';
|
||||||
import { help } from 'commands/aliasCmd/aliasHelp.ts';
|
import { help } from 'commands/aliasCmd/aliasHelp.ts';
|
||||||
import { list } from 'commands/aliasCmd/list.ts';
|
import { list } from 'commands/aliasCmd/list.ts';
|
||||||
|
import { rename } from './rename.ts';
|
||||||
import { run } from 'commands/aliasCmd/run.ts';
|
import { run } from 'commands/aliasCmd/run.ts';
|
||||||
import { view } from 'commands/aliasCmd/view.ts';
|
import { view } from 'commands/aliasCmd/view.ts';
|
||||||
|
|
||||||
|
@ -13,6 +14,7 @@ export default {
|
||||||
deleteOne,
|
deleteOne,
|
||||||
help,
|
help,
|
||||||
list,
|
list,
|
||||||
|
rename,
|
||||||
run,
|
run,
|
||||||
update,
|
update,
|
||||||
view,
|
view,
|
||||||
|
|
|
@ -72,6 +72,11 @@ To view ${guildMode ? '' : 'non-'}guild mode commands, please run \`${config.pre
|
||||||
value: `Copies the specified alias from ${guildMode ? 'this guild' : 'your account'} to ${guildMode ? 'your account' : 'this guild'}.`,
|
value: `Copies the specified alias from ${guildMode ? 'this guild' : 'your account'} to ${guildMode ? 'your account' : 'this guild'}.`,
|
||||||
inline: true,
|
inline: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: `\`${config.prefix}ra ${guildMode ? 'guild ' : ''}rename [oldAliasName] [newAliasName]`,
|
||||||
|
value: `Renames the specified alias in ${guildMode ? 'this guild' : 'your account'}.`,
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: `\`${config.prefix}ra ${guildMode ? 'guild ' : ''}[alias] [yVars...?]\` or \`${config.prefix}ra ${guildMode ? 'guild ' : ''}run/execute [alias] [yVars...?]\``,
|
name: `\`${config.prefix}ra ${guildMode ? 'guild ' : ''}[alias] [yVars...?]\` or \`${config.prefix}ra ${guildMode ? 'guild ' : ''}run/execute [alias] [yVars...?]\``,
|
||||||
value: `Runs the specified ${guildMode ? 'guild ' : ''}alias with the provided yVars. yVars are only required if the alias specified requires them.`,
|
value: `Runs the specified ${guildMode ? 'guild ' : ''}alias with the provided yVars. yVars are only required if the alias specified requires them.`,
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
import { DiscordenoMessage, hasGuildPermissions } from '@discordeno';
|
import { DiscordenoMessage, hasGuildPermissions } from '@discordeno';
|
||||||
import { failColor, successColor } from 'embeds/colors.ts';
|
|
||||||
import utils from 'utils/utils.ts';
|
|
||||||
import dbClient from 'db/client.ts';
|
|
||||||
import { generateAliasError } from 'embeds/alias.ts';
|
|
||||||
import config from '~config';
|
import config from '~config';
|
||||||
|
|
||||||
|
import dbClient from 'db/client.ts';
|
||||||
|
|
||||||
|
import { generateAliasError } from 'embeds/alias.ts';
|
||||||
|
import { failColor, successColor } from 'embeds/colors.ts';
|
||||||
|
|
||||||
|
import utils from 'utils/utils.ts';
|
||||||
|
|
||||||
interface QueryShape {
|
interface QueryShape {
|
||||||
aliasName: string;
|
aliasName: string;
|
||||||
yVarCnt: number;
|
yVarCnt: number;
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
import { DiscordenoMessage, hasGuildPermissions } from '@discordeno';
|
||||||
|
|
||||||
|
import config from '~config';
|
||||||
|
|
||||||
|
import dbClient from 'db/client.ts';
|
||||||
|
|
||||||
|
import { generateAliasError } from 'embeds/alias.ts';
|
||||||
|
import { failColor, successColor } from 'embeds/colors.ts';
|
||||||
|
|
||||||
|
import utils from 'utils/utils.ts';
|
||||||
|
|
||||||
|
interface QueryShape {
|
||||||
|
aliasName: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const rename = async (message: DiscordenoMessage, guildMode: boolean, argSpaces: string[]) => {
|
||||||
|
if (!guildMode && !(await hasGuildPermissions(message.authorId, message.guildId, ['ADMINISTRATOR']))) {
|
||||||
|
message
|
||||||
|
.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
color: failColor,
|
||||||
|
title: `Error: Only Guild Owners and Admins can rename a guild aliases`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('rename.ts:25', message, e));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const oldAliasName = (argSpaces.shift() || '').trim().toLowerCase();
|
||||||
|
argSpaces.shift();
|
||||||
|
const newAliasName = (argSpaces.shift() || '').trim().toLowerCase();
|
||||||
|
|
||||||
|
if (!oldAliasName || !newAliasName) {
|
||||||
|
message
|
||||||
|
.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
color: failColor,
|
||||||
|
title: `Error: Please specify both an alias to rename, and the new name to set it to.`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('rename.ts:32', message, e));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure old alias exists, and new doesn't exist first
|
||||||
|
let errorOut = false;
|
||||||
|
const queryOld: QueryShape[] = await dbClient
|
||||||
|
.query(
|
||||||
|
`SELECT aliasName FROM aliases WHERE guildid = ? AND userid = ? AND aliasName = ?`,
|
||||||
|
guildMode ? [message.guildId, 0n, oldAliasName] : [0n, message.authorId, oldAliasName],
|
||||||
|
)
|
||||||
|
.catch((e0) => {
|
||||||
|
utils.commonLoggers.dbError('rename.ts:44', 'query', e0);
|
||||||
|
message
|
||||||
|
.send(generateAliasError('DB Query Failed.', `rename-q0-${guildMode ? 't' : 'f'}-${oldAliasName}-${guildMode ? message.guildId : message.authorId}`))
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('rename.ts:47', message, e));
|
||||||
|
errorOut = true;
|
||||||
|
});
|
||||||
|
if (errorOut) return;
|
||||||
|
|
||||||
|
if (!queryOld.length) {
|
||||||
|
message
|
||||||
|
.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
color: failColor,
|
||||||
|
title: `Error: \`${oldAliasName}\` does not exist as a ${guildMode ? 'guild' : 'personal'} alias.`,
|
||||||
|
description: `If you are trying to update an existing alias, but forgot the name, please run the following command to view all your ${guildMode ? 'guild ' : ''}aliases:
|
||||||
|
\`${config.prefix}ra ${guildMode ? 'guild ' : ''}list\``,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('add.ts:63', message, e));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const queryNew: QueryShape[] = await dbClient
|
||||||
|
.query(
|
||||||
|
`SELECT aliasName FROM aliases WHERE guildid = ? AND userid = ? AND aliasName = ?`,
|
||||||
|
guildMode ? [message.guildId, 0n, newAliasName] : [0n, message.authorId, newAliasName],
|
||||||
|
)
|
||||||
|
.catch((e0) => {
|
||||||
|
utils.commonLoggers.dbError('rename.ts:44', 'query', e0);
|
||||||
|
message
|
||||||
|
.send(generateAliasError('DB Query Failed.', `rename-q1-${guildMode ? 't' : 'f'}-${newAliasName}-${guildMode ? message.guildId : message.authorId}`))
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('rename.ts:47', message, e));
|
||||||
|
errorOut = true;
|
||||||
|
});
|
||||||
|
if (errorOut) return;
|
||||||
|
|
||||||
|
if (queryNew.length) {
|
||||||
|
message
|
||||||
|
.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
color: failColor,
|
||||||
|
title: `Error: \`${newAliasName}\` already exists as a ${guildMode ? 'guild' : 'personal'} alias.`,
|
||||||
|
description: 'Please choose a different name for this alias.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('add.ts:63', message, e));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// do the rename
|
||||||
|
await dbClient
|
||||||
|
.execute('UPDATE aliases SET aliasName = ? WHERE guildid = ? AND userid = ? AND aliasName = ?', [
|
||||||
|
newAliasName,
|
||||||
|
guildMode ? message.guildId : 0n,
|
||||||
|
guildMode ? 0n : message.authorId,
|
||||||
|
oldAliasName,
|
||||||
|
])
|
||||||
|
.catch((e0) => {
|
||||||
|
utils.commonLoggers.dbError('rename.ts:169', 'update', e0);
|
||||||
|
message
|
||||||
|
.send(
|
||||||
|
generateAliasError(
|
||||||
|
'DB Update Failed.',
|
||||||
|
`rename-q2-${guildMode ? 't' : 'f'}-${oldAliasName}-${newAliasName}-${guildMode ? message.guildId : message.authorId}`,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('rename.ts:170', message, e));
|
||||||
|
errorOut = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
message
|
||||||
|
.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
color: successColor,
|
||||||
|
title: `Successfully renamed the ${guildMode ? 'guild' : 'personal'} alias \`${oldAliasName}\` to \`${newAliasName}\`!`,
|
||||||
|
description: `\`${newAliasName}\` is now available as an alias ${guildMode ? 'in this guild' : 'on your account'}.`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
.catch((e: Error) => utils.commonLoggers.messageSendError('rename.ts:132', message, e));
|
||||||
|
};
|
|
@ -18,4 +18,7 @@ export const ReservedWords = Object.freeze([
|
||||||
'remove-all',
|
'remove-all',
|
||||||
'run',
|
'run',
|
||||||
'execute',
|
'execute',
|
||||||
|
'clone',
|
||||||
|
'copy',
|
||||||
|
'rename',
|
||||||
]);
|
]);
|
||||||
|
|
Loading…
Reference in New Issue