mirai
command
welcome
No description
0
views
0
likes
0
installs
raw source
const { getTime, drive } = global.utils;
module.exports = {
config: {
name: "welcome",
version: "1.4",
author: "NTKhang",
category: "events"
},
langs: {
vi: {
session1: "sáng",
session2: "trưa",
session3: "chiều",
session4: "tối",
multiple1: "bạn",
multiple2: "các bạn",
welcomeMessage: "Cảm ơn bạn đã thêm mình vào nhóm!\nPrefix của bot: %1\nĐể xem danh sách lệnh, vui lòng nhập: %1help",
defaultWelcomeMessage: "Chào mừng {userNameTag} đã đến với {boxName}! Chúc {multiple} một buổi {session} vui vẻ 🎉"
},
en: {
session1: "morning",
session2: "noon",
session3: "afternoon",
session4: "evening",
multiple1: "you",
multiple2: "you guys",
welcomeMessage: "Thanks for adding me to the group.\nBot prefix: %1\nUse %1help to see the available commands.",
defaultWelcomeMessage: "Welcome {userNameTag} to {boxName}! Wishing you a great {session} 🎉"
}
},
onStart: async ({ threadsData, message, event, api, getLang, client }) => {
if (event.logMessageType !== "log:subscribe")
return;
return async function () {
const { threadID } = event;
const { addedParticipants } = event.logMessageData;
if (!addedParticipants || addedParticipants.length === 0)
return;
let threadData;
try {
threadData = await threadsData.get(threadID);
} catch (e) {
return;
}
if (!threadData?.settings?.sendWelcomeMessage)
return;
const botID = api.getCurrentUserID();
// ── Case 1: Bot itself was added to the group ──
if (addedParticipants.some(item => item.userFbId == botID)) {
const prefix = global.utils.getPrefix(threadID);
return message.send(getLang("welcomeMessage", prefix));
}
// ── Case 2: Regular member(s) joined ──
const hours = +getTime("HH");
const session =
hours < 10 ? getLang("session1") :
hours < 12 ? getLang("session2") :
hours < 18 ? getLang("session3") :
getLang("session4");
const isMultiple = addedParticipants.length > 1;
const multiple = isMultiple ? getLang("multiple2") : getLang("multiple1");
const threadName = threadData.threadName;
let { welcomeMessage = getLang("defaultWelcomeMessage") } = threadData.data;
const namesList = addedParticipants.map(u => u.fullName).join(", ");
const firstName = addedParticipants[0].fullName;
const mentions = addedParticipants.map(u => ({ tag: u.fullName, id: u.userFbId }));
welcomeMessage = welcomeMessage
.replace(/\{userName\}/g, isMultiple ? namesList : firstName)
.replace(/\{userNameTag\}/g, isMultiple ? namesList : firstName)
.replace(/\{multiple\}/g, multiple)
.replace(/\{boxName\}|\{threadName\}/g, threadName)
.replace(/\{session\}/g, session);
const form = { body: welcomeMessage, mentions };
if (threadData.data.welcomeAttachment && threadData.data.welcomeAttachment.length > 0) {
const streams = threadData.data.welcomeAttachment.map(fileId =>
drive.getFile(fileId, "stream")
);
const settled = await Promise.allSettled(streams);
form.attachment = settled
.filter(({ status }) => status === "fulfilled")
.map(({ value }) => value);
}
message.send(form);
};
}
};