const { drive, getStreamFromURL, getExtFromUrl, getTime } = global.utils; const checkUrlRegex = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/; module.exports = { config: { name: "تعيين_ترقية", aliases: ["setrankup"], version: "1.2", author: "NTKhang", countDown: 0, role: 0, description: { vi: "Cấu hình rankup", en: "Configure rankup" , ar: "إشعارات الرتبة" }, category: "owner", guide: { vi: " {pn} text : Cấu hình tin nhắn khi thành viên thăng hạng trong box chat của bạn" + "\n Với các tham số sau:" + "\n + {userName}: Tên thành viên" + "\n + {userNameTag}: Tag tên thành viên" + "\n + {oldRank}: Rank cũ của thành viên" + "\n + {currentRank}: Rank hiện tại của thành viên" + "\n {pn} file : Cấu hình file đính kèm khi thành viên thăng hạng trong box chat của bạn" + "\n {pn} reset: Đặt lại cấu hình mặc định", en: " {pn} text : Configure the message when a member rankup in your chatbox" + "\n With the following parameters:" + "\n + {userName}: Member's name" + "\n + {userNameTag}: Tag member's name" + "\n + {oldRank}: Member's old rank" + "\n + {currentRank}: Member's current rank" + "\n {pn} file : Configure the attachment file when a member rankup in your chatbox" + "\n {pn} reset: Reset to default configuration" , ar: "{pn} [on | off | نص]" } }, langs: { vi: { changedMessage: "Đã thay đổi tin nhắn rankup thành: %1", missingAttachment: "Bạn phải đính kèm ảnh để cấu hình ảnh rankup", changedAttachment: "Đã thêm %1 tệp đính kèm vào rankup thành công" }, en: { changedMessage: "Changed rankup message to: %1", missingAttachment: "You must attach an image to configure the rankup image", changedAttachment: "Successfully added %1 attachment to rankup" }, ar: { changedMessage: "Changed rankup message to: %1", missingAttachment: "You must attach an image to configure the rankup image", changedAttachment: "Successfully added %1 attachment to rankup" } }, onStart: async function ({ args, message, event, threadsData, getLang }) { const { body, threadID, senderID } = event; switch (args[0]) { case "text": { const newContent = body.slice(body.indexOf("text") + 5); await threadsData.set(threadID, newContent, "data.rankup.message"); return message.reply(getLang("changedMessage", newContent)); } case "file": case "image": case "mp3": case "video": { const attachments = [...event.attachments, ...(event.messageReply?.attachments || [])].filter(item => ["photo", 'png', "animated_image", "video", "audio"].includes(item.type)); if (!attachments.length && !(args[1] || '').match(checkUrlRegex)) return message.reply(getLang("missingAttachment", attachments.length)); const { data } = await threadsData.get(threadID); if (!data.rankup) data.rankup = {}; if (!data.rankup.attachments) data.rankup.attachments = []; for (const attachment of attachments) { const { url } = attachment; const ext = getExtFromUrl(url); const fileName = `${getTime()}.${ext}`; const infoFile = await drive.uploadFile(`setrankup_${threadID}_${senderID}_${fileName}`, await getStreamFromURL(url)); data.rankup.attachments.push(infoFile.id); } await threadsData.set(threadID, { data }); return message.reply(getLang("changedAttachment")); } } } };