UPDATE YOUR OWN NAMES?????
This commit is contained in:
parent
ce0405f9ef
commit
1b9ea5afed
|
@ -38,5 +38,18 @@
|
||||||
"description": "Send the get an extension button!",
|
"description": "Send the get an extension button!",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"default_member_permissions": 0
|
"default_member_permissions": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "name",
|
||||||
|
"description": "Change your extension's name (Defaults to your Discord name)",
|
||||||
|
"type": 1,
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "name",
|
||||||
|
"description": "The new name for your extension",
|
||||||
|
"type": 3,
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
8
funcs.js
8
funcs.js
|
@ -77,6 +77,14 @@ module.exports = {
|
||||||
}
|
}
|
||||||
}`;
|
}`;
|
||||||
break;
|
break;
|
||||||
|
case 'update_name':
|
||||||
|
return `mutation {
|
||||||
|
updateCoreUser (input: {extension: ${args.ext}, name: "${args.name}", noanswer_cid: "", busy_cid: "", chanunavail_cid: "", busy_dest: "", noanswer_dest: "", chanunavail_dest: ""}) {
|
||||||
|
coreuser {
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
77
index.js
77
index.js
|
@ -93,6 +93,36 @@ const deleteExtension = (ext) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateName = (ext, name) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
pbxClient.request(funcs.generateQuery('lookup', {
|
||||||
|
ext: ext
|
||||||
|
})).then((result) => {
|
||||||
|
pbxClient.request(funcs.generateQuery('update_name', {
|
||||||
|
ext: ext,
|
||||||
|
name: name
|
||||||
|
})).then((result) => {
|
||||||
|
pbxClient.request(funcs.generateQuery('reload', {
|
||||||
|
id: "UpdateName"
|
||||||
|
})).then((result) => {
|
||||||
|
res = {
|
||||||
|
"status": "updated",
|
||||||
|
"result": result
|
||||||
|
}
|
||||||
|
resolve(res);
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const lookupExtension = (ident, type) => { // type is either "ext" or "uid"
|
const lookupExtension = (ident, type) => { // type is either "ext" or "uid"
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -244,7 +274,7 @@ dcClient.on('ready', async () => {
|
||||||
console.log(message);
|
console.log(message);
|
||||||
};
|
};
|
||||||
|
|
||||||
sendLog(`${colors.cyan("[INFO]")} Logged in as ${dcClient.user.tag}!`);
|
sendLog(`${colors.cyan("[INFO]")} Logged in as ${dcClient.user.displayName}!`);
|
||||||
|
|
||||||
|
|
||||||
// Set up application commands
|
// Set up application commands
|
||||||
|
@ -467,7 +497,7 @@ dcClient.on('interactionCreate', async interaction => {
|
||||||
if (result.status == "success") {
|
if (result.status == "success") {
|
||||||
let uid = interaction.user.id;
|
let uid = interaction.user.id;
|
||||||
let ext = result.result;
|
let ext = result.result;
|
||||||
let name = interaction.user.tag;
|
let name = interaction.user.globalName;
|
||||||
interaction.editReply(`Creating extension ${ext}...`)
|
interaction.editReply(`Creating extension ${ext}...`)
|
||||||
// Create the extension
|
// Create the extension
|
||||||
createExtension(ext, name, uid).then((result) => {
|
createExtension(ext, name, uid).then((result) => {
|
||||||
|
@ -586,7 +616,7 @@ dcClient.on('interactionCreate', async interaction => {
|
||||||
content: "Extension Deleted!",
|
content: "Extension Deleted!",
|
||||||
ephemeral: true
|
ephemeral: true
|
||||||
});
|
});
|
||||||
sendLog(`${colors.green("[INFO]")} ${interaction.user.tag} (${interaction.user.id}) deleted extension ${result.result.fetchExtension.user.extension}`)
|
sendLog(`${colors.green("[INFO]")} ${interaction.user.globalName} (${interaction.user.id}) deleted extension ${result.result.fetchExtension.user.extension}`)
|
||||||
// Remove the role from the user on Discord based on the ID in the config file
|
// Remove the role from the user on Discord based on the ID in the config file
|
||||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||||
interaction.member.roles.remove(role);
|
interaction.member.roles.remove(role);
|
||||||
|
@ -643,6 +673,43 @@ dcClient.on('interactionCreate', async interaction => {
|
||||||
ephemeral: true
|
ephemeral: true
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
break;
|
||||||
|
case "name": // Update the users extension name, name is optional and defaults to the users Discord globalName
|
||||||
|
// sanity check the name, remove any quotes
|
||||||
|
let name;
|
||||||
|
if (!interaction.options.get("name")) {
|
||||||
|
name = interaction.user.globalName;
|
||||||
|
} else {
|
||||||
|
name = interaction.options.get("name").value;
|
||||||
|
}
|
||||||
|
name = name.replace(/"/g, "");
|
||||||
|
|
||||||
|
await interaction.deferReply({
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||||
|
if (result.status == "exists") {
|
||||||
|
// The user has an extension, update the name
|
||||||
|
updateName(result.result.fetchExtension.user.extension, name).then((result2) => {
|
||||||
|
if (result2.status == "updated") {
|
||||||
|
interaction.editReply({
|
||||||
|
content: "Extension Name Updated!",
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
sendLog(`${colors.green("[INFO]")} ${interaction.user.globalName} (${interaction.user.id}) updated extension ${result.result.fetchExtension.user.extension} name to ${name}`)
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
interaction.editReply(`Error updating extension name: ${error}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
// The user doesn't have an extension, return an ephemeral message saying so
|
||||||
|
interaction.editReply({
|
||||||
|
content: "You don't have an extension!",
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -667,7 +734,7 @@ dcClient.on('interactionCreate', async interaction => {
|
||||||
if (result.status == "success") {
|
if (result.status == "success") {
|
||||||
let uid = interaction.user.id;
|
let uid = interaction.user.id;
|
||||||
let ext = result.result;
|
let ext = result.result;
|
||||||
let name = interaction.user.tag;
|
let name = interaction.user.globalName;
|
||||||
interaction.editReply(`Creating extension ${ext}...`)
|
interaction.editReply(`Creating extension ${ext}...`)
|
||||||
// Create the extension
|
// Create the extension
|
||||||
createExtension(ext, name, uid).then((result) => {
|
createExtension(ext, name, uid).then((result) => {
|
||||||
|
@ -744,7 +811,7 @@ dcClient.on('interactionCreate', async interaction => {
|
||||||
content: "Extension Deleted!",
|
content: "Extension Deleted!",
|
||||||
ephemeral: true
|
ephemeral: true
|
||||||
});
|
});
|
||||||
sendLog(`${colors.green("[INFO]")} ${interaction.user.username} (${interaction.user.id}) deleted extension ${result.result.fetchExtension.user.extension}`)
|
sendLog(`${colors.green("[INFO]")} ${interaction.user.globalName} (${interaction.user.id}) deleted extension ${result.result.fetchExtension.user.extension}`)
|
||||||
// Remove the role from the user on Discord based on the ID in the config file
|
// Remove the role from the user on Discord based on the ID in the config file
|
||||||
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||||
interaction.member.roles.remove(role);
|
interaction.member.roles.remove(role);
|
||||||
|
|
1486
package-lock.json
generated
1486
package-lock.json
generated
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue