| |
|
| |
|
| | module.exports.config = { |
| | name: "menu", |
| | version: "1.0.0", |
| | hasPermssion: 0, |
| | credits: "Aizen", |
| | description: "Menu", |
| | usePrefix: true, |
| | usages: "[all/-a] [Page]", |
| | commandCategory: "system", |
| | cooldowns: 5 |
| | }; |
| |
|
| | module.exports.handleReply = ({ api, event, handleReply }) => { |
| | let num = parseInt(event.body.split(" ")[0].trim()); |
| | (handleReply.bonus) ? num -= handleReply.bonus : num; |
| | let msg = ""; |
| | let data = handleReply.content; |
| | let check = false; |
| | if (isNaN(num)) msg = "Not a number"; |
| | else if (num > data.length || num <= 0) msg = "Not available"; |
| | else { |
| | const { commands } = global.client; |
| | let dataAfter = data[num-=1]; |
| | if (handleReply.type == "cmd_info") { |
| | let command_config = commands.get(dataAfter).config; |
| | msg += `${command_config.commandCategory.toLowerCase()}\n`; |
| | msg += `\n+ Name: ${dataAfter}`; |
| | msg += `\n+ Description: ${command_config.description}`; |
| | msg += `\n+ Usages: ${(command_config.usages) ? command_config.usages : ""}`; |
| | msg += `\n+ Cooldown: ${command_config.cooldowns || 5}s`; |
| | msg += `\n+ Permissions: ${(command_config.hasPermssion == 0) ? "User" : (command_config.hasPermssion == 1) ? "Admin" : "Admins"}`; |
| | msg += `\n\n Module code by ${command_config.credits} `; |
| | } else { |
| | check = true; |
| | let count = 0; |
| | msg += `${dataAfter.group.toLowerCase()}\n`; |
| |
|
| | dataAfter.cmds.forEach(item => { |
| | msg += `\n ${count+=1} ${item}: ${commands.get(item).config.description}`; |
| | }) |
| | msg += "\n\n+ Reply message by number to view command details"; |
| | } |
| | } |
| |
|
| | return api.sendMessage(msg, event.threadID, (error, info) => { |
| | if (error) console.log(error); |
| | if (check) { |
| | global.client.handleReply.push({ |
| | type: "cmd_info", |
| | name: this.config.name, |
| | messageID: info.messageID, |
| | content: data[num].cmds |
| | }) |
| | } |
| | }, event.messageID); |
| | } |
| |
|
| | module.exports.run = function({ api, event, args }) { |
| | const { commands } = global.client; |
| | const { threadID, messageID } = event; |
| | const threadSetting = global.data.threadData.get(parseInt(threadID)) || {}; |
| | const prefix = (threadSetting.hasOwnProperty("PREFIX")) ? threadSetting.PREFIX : global.config.PREFIX; |
| |
|
| | const command = commands.values(); |
| | |
| | var group = [], msg = "\n"; |
| | |
| | let check = true, page_num_input = ""; |
| | let bonus = 0; |
| |
|
| | for (const commandConfig of command) { |
| | if (!group.some(item => item.group.toLowerCase() == commandConfig.config.commandCategory.toLowerCase())) group.push({ group: commandConfig.config.commandCategory.toLowerCase(), cmds: [commandConfig.config.name] }); |
| | else group.find(item => item.group.toLowerCase() == commandConfig.config.commandCategory.toLowerCase()).cmds.push(commandConfig.config.name); |
| | } |
| |
|
| | if (args[0] && ["all", "-a"].includes(args[0].trim())) { |
| | let all_commands = []; |
| | group.forEach(commandGroup => { |
| | commandGroup.cmds.forEach(item => all_commands.push(item)); |
| | }); |
| | let page_num_total = Math.ceil(all_commands.length / 100); |
| | if (args[1]) { |
| | check = false; |
| | page_num_input = parseInt(args[1]); |
| | if (isNaN(page_num_input)) msg = "Not a number"; |
| | else if (page_num_input > page_num_total || page_num_input <= 0) msg = "Not available"; |
| | else check = true; |
| | } |
| | if (check) { |
| | index_start = (page_num_input) ? (page_num_input * 100) - 100 : 0; |
| | bonus = index_start; |
| | index_end = (index_start + 100 > all_commands.length) ? all_commands.length : index_start + 100; |
| | all_commands = all_commands.slice(index_start, index_end); |
| | all_commands.forEach(e => { |
| | msg += `\n${index_start+=1}. ${e}: ${commands.get(e).config.description}`; |
| | }) |
| | msg += `\n\n【Reply message by number to view command details】`; |
| | msg += "\n"; |
| | } |
| | return api.sendMessage(msg, threadID, (error, info) => { |
| | if (check) { |
| | global.client.handleReply.push({ |
| | type: "cmd_info", |
| | bonus: bonus, |
| | name: this.config.name, |
| | messageID: info.messageID, |
| | content: all_commands |
| | }) |
| | } |
| | }, messageID) |
| | } |
| |
|
| | let page_num_total = Math.ceil(group.length / 100); |
| | if (args[0]) { |
| | check = false; |
| | page_num_input = parseInt(args[0]); |
| | if (isNaN(page_num_input)) msg = "Not a number"; |
| | else if (page_num_input > page_num_total || page_num_input <= 0) msg = "Not available"; |
| | else check = true; |
| | } |
| | if (check) { |
| | index_start = (page_num_input) ? (page_num_input * 100) - 100 : 0; |
| | bonus = index_start; |
| | index_end = (index_start + 100 > group.length) ? group.length : index_start + 100; |
| | console.log(page_num_input) |
| | console.log(index_start) |
| | console.log(index_end) |
| | group = group.slice(index_start, index_end); |
| | group.forEach(commandGroup => msg += `\n${index_start+=1}. ${commandGroup.group.toLowerCase()}`); |
| | msg += `\n\n»Page(${page_num_input || 1}/${page_num_total})`; |
| | msg += `\n»To view details of other pages, use: ${prefix}menu [number of pages]`; |
| | msg += `\n»Reply to messages by number to view commands by category`; |
| | } |
| | return api.sendMessage(msg, threadID, async (error, info) => { |
| | global.client.handleReply.push({ |
| | name: this.config.name, |
| | bonus: bonus, |
| | messageID: info.messageID, |
| | content: group |
| | }) |
| | }); |
| | } |