Add automatic extension list

This commit is contained in:
Christopher Cookman 2023-04-24 18:56:03 -06:00
parent bd3f740033
commit 801f9b27b0
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42
2 changed files with 106 additions and 4 deletions

View file

@ -12,6 +12,7 @@
"guildId": "mainguild",
"roleId": "userrole",
"devId": "yourdiscordid",
"logId": "logchannel"
"logId": "logchannel",
"extList": "extension list channel"
}
}

107
index.js
View file

@ -289,9 +289,110 @@ dcClient.on('ready', () => {
});
});
}).catch((error) => {
interaction.editReply(`Error listing extensions: ${error}`);
});
})
// Run every 5 minutes
const extListChannel = dcClient.channels.cache.get(config.discord.extList);
// Find the latest message from the bot in extListChannel, if there isn't one, send one. There can be other messages in the channel
// Sends the same message as the list command
setInterval(async () => {
await extListChannel.messages.fetch({
limit: 1
}).then((messages) => {
if (messages.size == 0) {
pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
let extensions = result.fetchAllExtensions.extension;
// key:value pairs of extension:username
let extensionList = {};
extensions.forEach((extension) => {
extensionList[extension.user.extension] = extension.user.name;
});
extensionList1 = "";
for (let key in extensionList) {
extensionList1 += `${key}: ${extensionList[key]}\n`;
}
extListChannel.send({
content: "",
embeds: [{
"title": "Extension List",
"color": 0x00ff00,
"description": `${extensionList1}`
}]
});
})
} else {
pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
let extensions = result.fetchAllExtensions.extension;
// key:value pairs of extension:username
let extensionList = {};
extensions.forEach((extension) => {
extensionList[extension.user.extension] = extension.user.name;
});
extensionList1 = "";
for (let key in extensionList) {
extensionList1 += `${key}: ${extensionList[key]}\n`;
}
messages.first().edit({
content: "",
embeds: [{
"title": "Extension List",
"color": 0x00ff00,
"description": `${extensionList1}`
}]
});
})
}
})
console.log(`${colors.cyan("[INFO]")} Updated extension list`);
}, 300000);
// Also run on startup
extListChannel.messages.fetch({
limit: 1
}).then((messages) => {
if (messages.size == 0) {
pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
let extensions = result.fetchAllExtensions.extension;
// key:value pairs of extension:username
let extensionList = {};
extensions.forEach((extension) => {
extensionList[extension.user.extension] = extension.user.name;
});
extensionList1 = "";
for (let key in extensionList) {
extensionList1 += `${key}: ${extensionList[key]}\n`;
}
extListChannel.send({
content: "",
embeds: [{
"title": "Extension List",
"color": 0x00ff00,
"description": `${extensionList1}`
}]
});
})
} else {
pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
let extensions = result.fetchAllExtensions.extension;
// key:value pairs of extension:username
let extensionList = {};
extensions.forEach((extension) => {
extensionList[extension.user.extension] = extension.user.name;
});
extensionList1 = "";
for (let key in extensionList) {
extensionList1 += `${key}: ${extensionList[key]}\n`;
}
messages.first().edit({
content: "",
embeds: [{
"title": "Extension List",
"color": 0x00ff00,
"description": `${extensionList1}`
}]
});
})
}
})
});
dcClient.on("guildMemberRemove", (member) => {