← back to browse
goat command

adduser

No description

0
views
0
likes
0
installs
raw source
const { findUid } = global.utils;
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

module.exports = {
	config: {
		name: "adduser",
		version: "1.5",
		author: "𓆩𝑅𝑜𝒷𝒾𝓃𓆪 𝒜𝓁𝒾",
		countDown: 5,
		role: 1,
		description: {
			vi: "Thêm thành viên vào box chat của bạn",
			en: "Add user to box chat of you"
		},
		category: "box chat",
		guide: {
			en: "   {pn} [link profile | uid]"
		}
	},

	langs: {
		vi: {
			alreadyInGroup: "Đã có trong nhóm",
			successAdd: "- Đã thêm thành công %1 thành viên vào nhóm",
			failedAdd: "- Không thể thêm %1 thành viên vào nhóm",
			approve: "- Đã thêm %1 thành viên vào danh sách phê duyệt",
			invalidLink: "Vui lòng nhập link facebook hợp lệ",
			cannotGetUid: "Không thể lấy được uid của người dùng này",
			linkNotExist: "Profile url này không tồn tại",
			cannotAddUser: "Bot bị chặn tính năng hoặc người dùng này chặn người lạ thêm vào nhóm"
		},
		en: {
			alreadyInGroup: "Already in group",
			successAdd: "- Successfully added %1 members to the group",
			failedAdd: "- Failed to add %1 members to the group",
			approve: "- Added %1 members to the approval list",
			invalidLink: "Please enter a valid facebook link",
			cannotGetUid: "Cannot get uid of this user",
			linkNotExist: "This profile url does not exist",
			cannotAddUser: "Bot is blocked or this user blocked strangers from adding to the group"
		},
		tl: {
			alreadyInGroup: "Nasa grupo na",
			successAdd: "- Matagumpay na naidagdag ang %1 miyembro sa grupo",
			failedAdd: "- Nabigo ang pagdaragdag ng %1 miyembro sa grupo",
			approve: "- Naidagdag ang %1 miyembro sa listahan ng pag-apruba",
			invalidLink: "Mangyaring maglagay ng wastong facebook link",
			cannotGetUid: "Hindi makuha ang uid ng user na ito",
			linkNotExist: "Ang profile url na ito ay hindi umiiral",
			cannotAddUser: "Naka-block ang bot o naka-block ng user na ito ang mga estranyo mula sa pagdaragdag sa grupo"
		},
		hi: {
			alreadyInGroup: "Pehle se group mein hai",
			successAdd: "- %1 members ko group mein successfully add kar diya gaya",
			failedAdd: "- %1 members ko group mein add karne mein fail",
			approve: "- %1 members ko approval list mein add kar diya gaya",
			invalidLink: "Kripya valid facebook link dalein",
			cannotGetUid: "Is user ka uid nahi mil sakta",
			linkNotExist: "Ye profile url exist nahi karta",
			cannotAddUser: "Bot blocked hai ya is user ne strangers ko group mein add karne se block kar rakha hai"
		},
		ar: {
			alreadyInGroup: "موجود بالفعل في المجموعة",
			successAdd: "- تمت إضافة %1 عضو بنجاح إلى المجموعة",
			failedAdd: "- فشل إضافة %1 عضو إلى المجموعة",
			approve: "- تمت إضافة %1 عضو إلى قائمة الموافقة",
			invalidLink: "الرجاء إدخال رابط فيسبوك صحيح",
			cannotGetUid: "لا يمكن الحصول على uid لهذا المستخدم",
			linkNotExist: "عنوان url للملف الشخصي هذا غير موجود",
			cannotAddUser: "البوت محظور أو هذا المستخدم منع الغرباء من إضافته للمجموعة"
		},
		bn: {
			alreadyInGroup: "ইতিমধ্যে গ্রুপে আছে",
			successAdd: "- %1 জন সদস্যকে গ্রুপে সফলভাবে যোগ করা হয়েছে",
			failedAdd: "- %1 জন সদস্যকে গ্রুপে যোগ করতে ব্যর্থ",
			approve: "- %1 জন সদস্যকে approval তালিকায় যোগ করা হয়েছে",
			invalidLink: "অনুগ্রহ করে সঠিক facebook link দিন",
			cannotGetUid: "এই user এর uid পাওয়া যাচ্ছে না",
			linkNotExist: "এই profile url টি বিদ্যমান নেই",
			cannotAddUser: "Bot blocked আছে বা এই user অপরিচিতদের গ্রুপে add করা block করে রেখেছে"
		}
	},

	onStart: async function ({ message, api, event, args, threadsData, getLang }) {
		const { members, adminIDs, approvalMode } = await threadsData.get(event.threadID);
		const botID = api.getCurrentUserID();

		const success = [
			{
				type: "success",
				uids: []
			},
			{
				type: "waitApproval",
				uids: []
			}
		];
		const failed = [];

		function checkErrorAndPush(messageError, item) {
			item = item.replace(/(?:https?:\/\/)?(?:www\.)?(?:facebook|fb|m\.facebook)\.(?:com|me)/i, '');
			const findType = failed.find(error => error.type == messageError);
			if (findType)
				findType.uids.push(item);
			else
				failed.push({
					type: messageError,
					uids: [item]
				});
		}

		const regExMatchFB = /(?:https?:\/\/)?(?:www\.)?(?:facebook|fb|m\.facebook)\.(?:com|me)\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]+)(?:\/)?/i;
		for (const item of args) {
			let uid;
			let continueLoop = false;

			if (isNaN(item) && regExMatchFB.test(item)) {
				for (let i = 0; i < 10; i++) {
					try {
						uid = await findUid(item);
						break;
					}
					catch (err) {
						if (err.name == "SlowDown" || err.name == "CannotGetData") {
							await sleep(1000);
							continue;
						}
						else if (i == 9 || (err.name != "SlowDown" && err.name != "CannotGetData")) {
							checkErrorAndPush(
								err.name == "InvalidLink" ? getLang('invalidLink') :
									err.name == "CannotGetData" ? getLang('cannotGetUid') :
										err.name == "LinkNotExist" ? getLang('linkNotExist') :
											err.message,
								item
							);
							continueLoop = true;
							break;
						}
					}
				}
			}
			else if (!isNaN(item))
				uid = item;
			else
				continue;

			if (continueLoop == true)
				continue;

			if (members.some(m => m.userID == uid && m.inGroup)) {
				checkErrorAndPush(getLang("alreadyInGroup"), item);
			}
			else {
				try {
					await api.addUserToGroup(uid, event.threadID);
					if (approvalMode === true && !adminIDs.includes(botID))
						success[1].uids.push(uid);
					else
						success[0].uids.push(uid);
				}
				catch (err) {
					checkErrorAndPush(getLang("cannotAddUser"), item);
				}
			}
		}

		const lengthUserSuccess = success[0].uids.length;
		const lengthUserWaitApproval = success[1].uids.length;
		const lengthUserError = failed.length;

		let msg = "";
		if (lengthUserSuccess)
			msg += `${getLang("successAdd", lengthUserSuccess)}\n`;
		if (lengthUserWaitApproval)
			msg += `${getLang("approve", lengthUserWaitApproval)}\n`;
		if (lengthUserError)
			msg += `${getLang("failedAdd", failed.reduce((a, b) => a + b.uids.length, 0))} ${failed.reduce((a, b) => a += `\n    + ${b.uids.join('\n       ')}: ${b.type}`, "")}`;
		await message.reply(msg);
	}
};

View raw file