const { drive, getStreamFromURL, getExtFromUrl, getTime } = global.utils; module.exports = { config: { name: "ترحيب", aliases: ["setwelcome", "setwc"], version: "1.7", author: "NTKhang", countDown: 5, role: 1, description: { vi: "Chỉnh sửa nội dung tin nhắn chào mừng thành viên mới tham gia vào nhóm chat của bạn", en: "Edit welcome message content when new member join yمجموعتنا chat" , ar: "رسالة الترحيب" }, category: "custom", guide: { vi: { body: " {pn} text [ | reset]: chỉnh sửa nội dung văn bản hoặc reset về mặc định, với những shortcut có sẵn:" + "\n + {userName}: tên của thành viên mới" + "\n + {userNameTag}: tên của thành viên mới (tag)" + "\n + {boxName}: tên của nhóm chat" + "\n + {multiple}: bạn || các bạn" + "\n + {session}: buổi trong ngày" + "\n\n Ví dụ:" + "\n {pn} text Hello {userName}, welcome to {boxName}, chúc {multiple} một ngày mới vui vẻ" + "\n" + "\n Reply (phản hồi) hoặc gửi kèm một tin nhắn có file với nội dung {pn} file: để thêm tệp đính kèm vào tin nhắn chào mừng (ảnh, video, audio)" + "\n\n Ví dụ:" + "\n {pn} file reset: xóa gửi file", attachment: { [`${__dirname}/assets/guide/setwelcome/setwelcome_vi_1.png`]: "https://i.ibb.co/vd6bQrW/setwelcome-vi-1.png" } }, en: { body: " {pn} text [ | reset]: edit text content or reset to default, with some shortcuts:" + "\n + {userName}: new member name" + "\n + {userNameTag}: new member name (tag)" + "\n + {boxName}: group chat name" + "\n + {multiple}: you || you guys" + "\n + {session}: session in day" + "\n\n مثال:" + "\n {pn} text Hello {userName}, welcome to {boxName}, have a nice day {multiple}" + "\n" + "\n Reply (phản hồi) or send a message with file with content {pn} file: to add file attachments to welcome message (image, video, audio)" + "\n\n مثال:" + "\n {pn} file reset: delete file attachments", attachment: { [`${__dirname}/assets/guide/setwelcome/setwelcome_en_1.png`]: "https://i.ibb.co/vsCz0ks/setwelcome-en-1.png" } } , ar: "{pn} text <المحتوى>\n{pn} on | off" } }, langs: { vi: { turnedOn: "Đã bật chức năng chào mừng thành viên mới", turnedOff: "Đã tắt chức năng chào mừng thành viên mới", missingContent: "Vui lùng nhập nội dung tin nhắn", edited: "Đã chỉnh sửa nội dung tin nhắn chào mừng của nhóm bạn thành: %1", reseted: "Đã reset nội dung tin nhắn chào mừng", noFile: "Không có tệp đính kèm tin nhắn chào mừng nào để xóa", resetedFile: "Đã reset tệp đính kèm thành công", missingFile: "Hãy phản hồi tin nhắn này kèm file ảnh/video/audio", addedFile: "Đã thêm %1 tệp đính kèm vào tin nhắn chào mừng của nhóm bạn" }, en: { turnedOn: "Turned on welcome message", turnedOff: "Turned off welcome message", missingContent: "Please enter welcome message content", edited: "Edited welcome message content of yمجموعتنا to: %1", reseted: "Reseted welcome message content", noFile: "No file attachments to delete", resetedFile: "Reseted file attachments successfully", missingFile: "Please reply this message with image/video/audio file", addedFile: "Added %1 file attachments to yمجموعتنا welcome message" }, tl: { turnedOn: "Na-on ang welcome message", turnedOff: "Na-off ang welcome message", missingContent: "Mangyaring ilagay ang nilalaman ng welcome message", edited: "Na-edit ang nilalaman ng welcome message ng iyong grupo sa: %1", reseted: "Na-reset ang nilalaman ng welcome message", noFile: "Walang file attachments na tatanggalin", resetedFile: "Matagumpay na na-reset ang mga file attachment", missingFile: "Mangyaring sumagot sa mensaheng ito na may image/video/audio file", addedFile: "Naidagdag ang %1 file attachment sa welcome message ng iyong grupo" }, hi: { turnedOn: "Welcome message on ho gaya", turnedOff: "Welcome message off ho gaya", missingContent: "Kripya welcome message ka content dalein", edited: "Aapke group ka welcome message content badal diya gaya: %1", reseted: "Welcome message content reset ho gaya", noFile: "Delete karne ke liye koi file attachment nahi hai", resetedFile: "File attachments successfully reset ho gaye", missingFile: "Kripya is message ka reply image/video/audio file ke saath karein", addedFile: "Aapke group ke welcome message mein %1 file attachment add kar diye gaye" }, ar: { turnedOn: "تم تفعيل رسالة الترحيب", turnedOff: "تم إيقاف رسالة الترحيب", missingContent: "الرجاء إدخال محتوى رسالة الترحيب", edited: "تم تعديل محتوى رسالة الترحيب لمجموعتك إلى: %1", reseted: "تمت إعادة تعيين محتوى رسالة الترحيب", noFile: "لا توجد مرفقات لحذفها", resetedFile: "تمت إعادة تعيين المرفقات بنجاح", missingFile: "الرجاء الرد على هذه الرسالة بملف صورة/فيديو/صوت", addedFile: "تمت إضافة %1 مرفق إلى رسالة الترحيب في مجموعتك" }, bn: { turnedOn: "Welcome message চালু হয়েছে", turnedOff: "Welcome message বন্ধ হয়েছে", missingContent: "অনুগ্রহ করে welcome message এর বিষয়বস্তু লিখুন", edited: "আপনার group এর welcome message পরিবর্তন হয়েছে: %1", reseted: "Welcome message রিসেট হয়েছে", noFile: "মুছার জন্য কোনো file attachment নেই", resetedFile: "File attachments সফলভাবে রিসেট হয়েছে", missingFile: "অনুগ্রহ করে এই message এ image/video/audio file সহ reply করুন", addedFile: "আপনার group এর welcome message এ %1 টি file attachment যোগ করা হয়েছে" } }, onStart: async function ({ args, threadsData, message, event, commandName, getLang }) { const { threadID, senderID, body } = event; const { data, settings } = await threadsData.get(threadID); switch (args[0]) { case "text": { if (!args[1]) return message.reply(getLang("missingContent")); else if (args[1] == "reset") delete data.welcomeMessage; else data.welcomeMessage = body.slice(body.indexOf(args[0]) + args[0].length).trim(); await threadsData.set(threadID, { data }); message.reply(data.welcomeMessage ? getLang("edited", data.welcomeMessage) : getLang("reseted")); break; } case "file": { if (args[1] == "reset") { const { welcomeAttachment } = data; if (!welcomeAttachment) return message.reply(getLang("noFile")); try { await Promise.all(data.welcomeAttachment.map(fileId => drive.deleteFile(fileId))); delete data.welcomeAttachment; } catch (e) { } await threadsData.set(threadID, { data }); message.reply(getLang("resetedFile")); } else if (event.attachments.length == 0 && (!event.messageReply || event.messageReply.attachments.length == 0)) return message.reply(getLang("missingFile"), (err, info) => { global.GoatBot.onReply.set(info.messageID, { messageID: info.messageID, author: senderID, commandName }); }); else { saveChanges(message, event, threadID, senderID, threadsData, getLang); } break; } case "on": case "off": { settings.sendWelcomeMessage = args[0] == "on"; await threadsData.set(threadID, { settings }); message.reply(settings.sendWelcomeMessage ? getLang("turnedOn") : getLang("turnedOff")); break; } default: message.SyntaxError(); break; } }, onReply: async function ({ event, Reply, message, threadsData, getLang }) { const { threadID, senderID } = event; if (senderID != Reply.author) return; if (event.attachments.length == 0 && (!event.messageReply || event.messageReply.attachments.length == 0)) return message.reply(getLang("missingFile")); saveChanges(message, event, threadID, senderID, threadsData, getLang); } }; async function saveChanges(message, event, threadID, senderID, threadsData, getLang) { const { data } = await threadsData.get(threadID); const attachments = [...event.attachments, ...(event.messageReply?.attachments || [])].filter(item => ["photo", 'png', "animated_image", "video", "audio"].includes(item.type)); if (!data.welcomeAttachment) data.welcomeAttachment = []; await Promise.all(attachments.map(async attachment => { const { url } = attachment; const ext = getExtFromUrl(url); const fileName = `${getTime()}.${ext}`; const infoFile = await drive.uploadFile(`setwelcome_${threadID}_${senderID}_${fileName}`, await getStreamFromURL(url)); data.welcomeAttachment.push(infoFile.id); })); await threadsData.set(threadID, { data }); message.reply(getLang("addedFile", attachments.length)); }