← 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: "2.0",
		author: "〲MAMUNツ࿐",
		countDown: 5,
		role: 1,
		description: {
			vi: "Thêm thành viên vào box chat của bạn",
			en: "Add user to your group chat"
		},
		category: "box chat",
		guide: {
			en: "{pn} [uid | facebook link]"
		}
	},

	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",
			approve: "🕒 Đã thêm %1 thành viên vào danh sách chờ duyệt",
			invalidLink: "Link Facebook không hợp lệ",
			cannotGetUid: "Không thể lấy UID",
			linkNotExist: "Link profile không tồn tại",
			cannotAddUser: "Bot bị chặn hoặc người dùng chặn thêm vào nhóm"
		},
		en: {
			alreadyInGroup: "Already in group",
			successAdd: "✅ Successfully added %1 member(s)",
			failedAdd: "❌ Failed to add %1 member(s)",
			approve: "🕒 Added %1 member(s) to approval list",
			invalidLink: "Invalid Facebook link",
			cannotGetUid: "Cannot get UID",
			linkNotExist: "Profile link does not exist",
			cannotAddUser: "Bot is blocked or user blocked group invites"
		}
	},

	onStart: async function ({ message, api, event, args, threadsData, getLang }) {

		if (!args[0]) {
			return message.reply("⚠️ Please enter UID or Facebook profile link");
		}

		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)
				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 = "📌 ADD USER RESULT\n━━━━━━━━━━━━━━\n";

		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\n• ${b.uids.join("\n• ")}\n➜ ${b.type}`,
				""
			)}`;

		msg += `\n━━━━━━━━━━━━━━\n👑 Admin: 𝗠𝗔𝗠𝗨𝗡`;

		await message.reply(msg);
	}
};

View raw file