// code from goatstore // api: https://store.agi.bd module.exports = { config: { name: "allnick", aliases: ["an"], version: "3.0.0", author: "ไบ—๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ไบ—", countDown: 10, role: 1, shortDescription: { en: "Change/reset nickname of all members safely" }, category: "owner", guide: { en: "{pn} " }, envConfig: { delayPerBatch: 1500, batchSize: 5, retryLimit: 1 } }, onStart: async function ({ api, event, args, message }) { const threadID = event.threadID; const input = args.join(" ").trim(); if (!input) { return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๐—ฅ ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘ โš ๏ธ เฆจเฆฟเฆ•เฆจเง‡เฆฎ เฆฆเฆพเฆ“ เฆ…เฆฅเฆฌเฆพ cancel เฆฒเง‡เฆ–เง‹ โœจ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ` ); } try { const threadInfo = await api.getThreadInfo(threadID); if (!threadInfo.isGroup) { return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๐—ฅ ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘ โŒ เฆเฆ‡ เฆ•เฆฎเฆพเฆจเงเฆก เฆถเงเฆงเง เฆ—เงเฆฐเงเฆชเง‡ เฆ•เฆพเฆœ เฆ•เฆฐเง‡ ๐Ÿ˜ฟ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ` ); } const botID = api.getCurrentUserID(); const isAdmin = threadInfo.adminIDs.some(item => item.id == botID); if (!isAdmin) { return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๐—ฅ ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘ โ›” เฆฌเฆŸ เฆเฆกเฆฎเฆฟเฆจ เฆจเฆพ ๐Ÿ˜พ โœจ เฆ†เฆ—เง‡ เฆฌเฆŸเฆ•เง‡ เฆเฆกเฆฎเฆฟเฆจ เฆฌเฆพเฆจเฆพเฆ“ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ` ); } const members = threadInfo.participantIDs || []; const totalMembers = members.length; await message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๐—ฅ ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘ ๐Ÿš€ เฆฎเง‹เฆŸ ${totalMembers} เฆœเฆจ เฆฎเง‡เฆฎเงเฆฌเฆพเฆฐเง‡เฆฐ เฆจเฆฟเฆ•เฆจเง‡เฆฎ เฆšเง‡เฆžเงเฆœ เฆถเงเฆฐเง เฆนเฆšเงเฆ›เง‡... ๐Ÿ’ซ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ` ); const { delayPerBatch, batchSize } = module.exports.config.envConfig; let done = 0; let failedCount = 0; let lastProgressPercent = 0; for (let i = 0; i < totalMembers; i += batchSize) { const batch = members.slice(i, i + batchSize); await Promise.all(batch.map(async (userID) => { try { if (input.toLowerCase() === "cancel") { await api.changeNickname("", threadID, userID); } else { await api.changeNickname(input, threadID, userID); } done++; } catch (err) { failedCount++; } })); const currentPercent = Math.floor((done / totalMembers) * 100); if (currentPercent >= lastProgressPercent + 20 || currentPercent === 100) { lastProgressPercent = currentPercent; const progMsg = `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๐—ฅ ๐† แ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘\n\n๐Ÿ“Š เฆ•เฆพเฆœ เฆšเฆฒเฆ›เง‡... ${currentPercent}% เฆธเฆฎเงเฆชเฆจเงเฆจ โœจ\n\n๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ`; try { await api.sendMessage(progMsg, threadID); } catch (e) { console.error(e.message); } } await new Promise(resolve => setTimeout(resolve, delayPerBatch)); } if (failedCount === 0) { if (input.toLowerCase() === "cancel") { return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๏ผฒ ๐† แ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘ ๐Ÿ”„ เฆธเฆฌ เฆฎเง‡เฆฎเงเฆฌเฆพเฆฐเง‡เฆฐ เฆจเฆฟเฆ•เฆจเง‡เฆฎ เฆฐเฆฟเฆฎเงเฆญ เฆ•เฆฐเฆพ เฆนเฆฏเฆผเง‡เฆ›เง‡ ๐Ÿ’ซ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ` ); } else { return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๏ผฒ ๐† แ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โœ… เฆธเฆฌ เฆฎเง‡เฆฎเงเฆฌเฆพเฆฐเง‡เฆฐ เฆจเฆฟเฆ•เฆจเง‡เฆฎ เฆธเฆซเฆฒเฆญเฆพเฆฌเง‡ เฆšเง‡เฆžเงเฆœ เฆนเฆฏเฆผเง‡เฆ›เง‡ โœจ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—ง โœจ` ); } } else { return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๏ผฒ ๐† แ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘ ๐Ÿ‘‘ โœ… เฆ•เฆพเฆœ เฆถเง‡เฆท! เฆธเฆซเฆฒ: ${done} เฆœเฆจเฅค โš ๏ธ เฆซเง‡เฆธเฆฌเงเฆ• เฆฒเฆฟเฆฎเฆฟเฆŸเง‡เฆฐ เฆ•เฆพเฆฐเฆฃเง‡ ${failedCount} เฆœเฆจเง‡เฆฐ เฆšเง‡เฆžเงเฆœ เฆ•เฆฐเฆพ เฆฏเฆพเงŸเฆจเฆฟ ๐Ÿ˜ฟ เฆธเฆฟเฆฏเฆผเฆพเฆฎ เฆนเฆพเฆธเฆพเฆจ ๐Ÿ˜” ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—งโœจ` ); } } catch (err) { console.error(err); return message.reply( `๐Ÿ‘‘๐—•๐—ข๐—ง ๐—ข๐—ช๐—ก๐—˜๏ผฒ ๐† แ๐‘๐€๐˜๐‡๐€๐-๐’๐€๐๐๐ˆ๐‘๐Ÿ‘‘ โŒ เฆธเฆฟเฆธเงเฆŸเง‡เฆฎ เฆเฆฐเฆฐ เฆนเฆฏเฆผเง‡เฆ›เง‡! เฆ—เงเฆฐเงเฆช เฆกเฆพเฆŸเฆพ เฆฒเง‹เฆก เฆซเง‡เฆ‡เฆฒ๐Ÿ˜ฟ ๐Ÿ‘‘ ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—•๐—ข๐—งโœจ` ); } } };