const axios = require("axios"); const fs = require("fs-extra"); const request = require("request"); module.exports = { config: { name: "leave", version: "0.0.7", author: "Azadx69x", countDown: 5, role: 2, shortDescription: "Leave group chats", longDescription: "List all group chats with pagination and leave selected groups", category: "admin", guide: { en: "{p}{n} - List groups\nReply with number to leave\nReply 'next'/'previous' for pagination", }, }, onStart: async function ({ api, event, message }) { try { const groupList = await api.getThreadList(300, null, ['INBOX']); const filteredList = groupList.filter(group => group.threadName !== null); if (filteredList.length === 0) { return message.reply('āŒ ššØ š š«šØš®š© šœš”ššš­š¬ šŸšØš®š§š.'); } const formatGroups = (list, start=0) => list.slice(start, start+5).map((g,i) => { let groupName = g.threadName; if (groupName.length > 25) groupName = groupName.slice(0,22) + "..."; return `│ ${start+i+1}. š†š«šØš®š©: ${groupName}\n│ šŸ†” š“šˆšƒ: ${g.threadID}`; }); const start = 0; const currentList = formatGroups(filteredList, start); const totalPages = Math.ceil(filteredList.length / 5); const message_text = `╭━━━━━━━━━━━━━━━━━╮ │ 🚪 š‹š„š€š•š„ š‚šŽšŒšŒš€ššƒ │ ā”œā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”¤ ${currentList.join("\n")} ā”œā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”¤ │ šŸ“„ šššš šž 1/${totalPages} │ šŸ’” š‘šžš©š„š²: š§š®š¦š›šžš« ╰━━━━━━━━━━━━━━━━━╯`; const sentMessage = await message.reply(message_text); global.GoatBot.onReply.set(sentMessage.messageID, { commandName: 'leave', messageID: sentMessage.messageID, author: event.senderID, start, filteredList, totalPages }); } catch (error) { console.error("Error listing group chats:", error); message.reply('āŒ š€š§ šžš«š«šØš« šØšœšœš®š«š«šžš š°š”š¢š„šž š„š¢š¬š­š¢š§š  š š«šØš®š© šœš”ššš­š¬.'); } }, onReply: async function ({ api, event, Reply, args, message }) { const { author, start, filteredList, totalPages } = Reply; if (event.senderID !== author) { return message.reply('āš ļø šŽš§š„š² š­š”šž šœšØš¦š¦ššš§š ššš®š­š”šØš« šœššš§ š®š¬šž š­š”š¢š¬ š«šžš©š„š².'); } const userInput = args.join(" ").trim().toLowerCase(); const formatGroups = (list, start=0) => list.slice(start, start+5).map((g,i) => { let groupName = g.threadName; if (groupName.length > 25) groupName = groupName.slice(0,22) + "..."; return `│ ${start+i+1}. š†š«šØš®š©: ${groupName}\n│ šŸ†” š“šˆšƒ: ${g.threadID}`; }); if (userInput === 'next') { const nextStart = start + 5; if (nextStart >= filteredList.length) return message.reply('āš ļø š„š§š šØšŸ š„š¢š¬š­ š«šžšššœš”šžš.'); const currentList = formatGroups(filteredList, nextStart); const currentPage = Math.floor(nextStart/5)+1; const message_text = `╭━━━━━━━━━━━━━━━━━╮ │ 🚪 š‹š„š€š•š„ š‚šŽšŒšŒš€ššƒ │ ā”œā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”¤ ${currentList.join("\n")} ā”œā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”¤ │ šŸ“„ šššš šž ${currentPage}/${totalPages} │ šŸ’” š‘šžš©š„š²: š§š®š¦š›šžš« ╰━━━━━━━━━━━━━━━━━╯`; const sentMessage = await message.reply(message_text); global.GoatBot.onReply.set(sentMessage.messageID, { commandName: 'leave', messageID: sentMessage.messageID, author: event.senderID, start: nextStart, filteredList, totalPages }); return; } if (userInput === 'previous') { const prevStart = Math.max(start - 5, 0); if (prevStart === start) return message.reply('āš ļø š€š„š«šžšššš² ššš­ š­š”šž š›šžš š¢š§š§š¢š§š .'); const currentList = formatGroups(filteredList, prevStart); const currentPage = Math.floor(prevStart/5)+1; const message_text = `╭━━━━━━━━━━━━━━━━━╮ │ 🚪 š‹š„š€š•š„ š‚šŽšŒšŒš€ššƒ │ ā”œā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”¤ ${currentList.join("\n")} ā”œā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”ā”¤ │ šŸ“„ šššš šž ${currentPage}/${totalPages} │ šŸ’” š‘šžš©š„š²: š§š®š¦š›šžš« ╰━━━━━━━━━━━━━━━━━╯`; const sentMessage = await message.reply(message_text); global.GoatBot.onReply.set(sentMessage.messageID, { commandName: 'leave', messageID: sentMessage.messageID, author: event.senderID, start: prevStart, filteredList, totalPages }); return; } if (!isNaN(userInput)) { const idx = parseInt(userInput,10); if (idx <= 0 || idx > filteredList.length) return message.reply(`āŒ šˆš§šÆššš„š¢š š š«šØš®š© š§š®š¦š›šžš«. š‚š”šØšØš¬šž 1-${filteredList.length}`); const group = filteredList[idx-1]; try { const botId = api.getCurrentUserID(); await api.removeUserFromGroup(botId, group.threadID); return message.reply(`āœ… š’š®šœšœšžš¬š¬šŸš®š„š„š² š„šžšŸš­: šŸ“› ${group.threadName.length>25 ? group.threadName.slice(0,22)+"..." : group.threadName} šŸ†” ${group.threadID}`); } catch (err) { console.error(err); return message.reply('āŒ š…ššš¢š„šžš š­šØ š„šžšššÆšž š­š”šž š š«šØš®š©.'); } } message.reply(`āŒ šˆš§šÆššš„š¢š š¢š§š©š®š­. šŸ’” š”š¬šž: • šš®š¦š›šžš« 1-${filteredList.length} š­šØ š„šžšššÆšž • "next" šŸšØš« š§šžš±š­ š©ššš šž • "previous" šŸšØš« š©š«šžšÆš¢šØš®š¬`); }, };