Add link/unlink commands for staff
This commit is contained in:
parent
a7d4a91936
commit
1253de3bb4
32
commands.js
32
commands.js
|
@ -264,6 +264,38 @@ module.exports = [
|
||||||
"required": true
|
"required": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "link",
|
||||||
|
"description": "Link an existing extension to a Discord user",
|
||||||
|
"type": 1,
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "user",
|
||||||
|
"description": "The Discord user to link the extension to",
|
||||||
|
"type": 6,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "extension",
|
||||||
|
"description": "The extension number to link",
|
||||||
|
"type": 4,
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unlink",
|
||||||
|
"description": "Unlink an extension from a Discord user",
|
||||||
|
"type": 1,
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "extension",
|
||||||
|
"description": "The extension number to unlink",
|
||||||
|
"type": 4,
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
3
index.js
3
index.js
|
@ -180,6 +180,9 @@ if (fs.existsSync("./import.json")) {
|
||||||
insertData();
|
insertData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const findOrphans = async () => { // Find extensions that exist but don't have a linked Discord user
|
||||||
|
pool.query("SELECT id FROM asterisk.devices WHERE id NOT IN (SELECT extension FROM asterisk.discord_users)")
|
||||||
|
|
||||||
// Startup
|
// Startup
|
||||||
require("./migrations")(pool).then(() => {
|
require("./migrations")(pool).then(() => {
|
||||||
log.success("Database migrations complete.");
|
log.success("Database migrations complete.");
|
||||||
|
|
|
@ -79,5 +79,49 @@ module.exports.execute = async (interaction) => {
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case "link": // Link an extension to a user (or at least try to)
|
||||||
|
await interaction.deferReply({ ephemeral: true });
|
||||||
|
var forUser = interaction.options.getUser('user');
|
||||||
|
var ext = interaction.options.getInteger('extension');
|
||||||
|
if (!ext) {
|
||||||
|
await interaction.editReply({ content: `You must provide an extension to link!`, ephemeral: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var [lookup] = await pool.query('SELECT * FROM discord_users WHERE discordId = ?', [forUser.id]);
|
||||||
|
if (lookup) {
|
||||||
|
await interaction.editReply({ content: `User already has an extension, it's ${lookup.extension}!`, ephemeral: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var [extLookup] = await pool.query('SELECT * FROM discord_users WHERE extension = ?', [ext]);
|
||||||
|
if (extLookup) {
|
||||||
|
await interaction.editReply({ content: `Extension ${ext} is already linked to another user! It's linked to ${extLookup.discordId}`, ephemeral: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var [extExists] = await pool.query('SELECT * FROM asterisk.devices WHERE id = ?', [ext]);
|
||||||
|
if (!extExists) {
|
||||||
|
await interaction.editReply({ content: `Extension ${ext} does not exist!`, ephemeral: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await pool.query('INSERT INTO discord_users (discordId, extension) VALUES (?, ?)', [forUser.id, ext]);
|
||||||
|
await interaction.editReply({ content: `Extension ${ext} linked to ${forUser.username}!`, ephemeral: true });
|
||||||
|
break;
|
||||||
|
case "unlink": // Unlink an extension from a user
|
||||||
|
await interaction.deferReply({ ephemeral: true });
|
||||||
|
var ext = interaction.options.getInteger('extension');
|
||||||
|
if (!ext) {
|
||||||
|
await interaction.editReply({ content: `You must provide an extension to unlink!`, ephemeral: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var [lookup] = await pool.query('SELECT * FROM discord_users WHERE extension = ?', [ext]);
|
||||||
|
if (!lookup) {
|
||||||
|
await interaction.editReply({ content: `Extension ${ext} is not linked to any user!`, ephemeral: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await pool.query('DELETE FROM discord_users WHERE extension = ?', [ext]);
|
||||||
|
await interaction.editReply({ content: `Extension ${ext} unlinked from ${lookup.discordId}!`, ephemeral: true });
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
await interaction.reply({ content: 'Unknown subcommand!', ephemeral: true });
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue