goat
command
rankup
No description
0
views
0
likes
0
installs
raw source
const deltaNext = global.GoatBot.configCommands.envCommands.rank.deltaNext;
const expToLevel = exp => Math.floor((1 + Math.sqrt(1 + 8 * exp / deltaNext)) / 2);
const { drive } = global.utils;
module.exports = {
config: {
name: "rankup",
version: "1.4",
author: "𓆩𝑅𝑜𝒷𝒾𝓃𓆪 𝒜𝓁𝒾",
countDown: 5,
role: 0,
description: {
vi: "Bật/tắt thông báo level up",
en: "Turn on/off level up notification"
},
category: "rank",
guide: {
en: "{pn} [on | off]"
},
envConfig: {
deltaNext: 5
}
},
langs: {
vi: {
syntaxError: "Sai cú pháp, chỉ có thể dùng {pn} on hoặc {pn} off",
turnedOn: "Đã bật thông báo level up",
turnedOff: "Đã tắt thông báo level up",
notiMessage: "🎉🎉 chúc mừng bạn đạt level %1"
},
en: {
syntaxError: "Syntax error, only use {pn} on or {pn} off",
turnedOn: "Turned on level up notification",
turnedOff: "Turned off level up notification",
notiMessage: "🎉🎉 Congratulations on reaching level %1"
}
},
onStart: async function ({ message, event, threadsData, args, getLang }) {
if (!["on", "off"].includes(args[0]))
return message.reply(getLang("syntaxError"));
await threadsData.set(event.threadID, args[0] == "on", "settings.sendRankupMessage");
return message.reply(args[0] == "on" ? getLang("turnedOn") : getLang("turnedOff"));
},
onChat: async function ({ threadsData, usersData, event, message, getLang }) {
const threadData = await threadsData.get(event.threadID);
const sendRankupMessage = threadData.settings.sendRankupMessage;
if (!sendRankupMessage)
return;
const { exp } = await usersData.get(event.senderID);
const currentLevel = expToLevel(exp);
if (currentLevel > expToLevel(exp - 1)) {
let customMessage = await threadsData.get(event.threadID, "data.rankup.message");
let isTag = false;
let userData;
const formMessage = {};
if (customMessage) {
userData = await usersData.get(event.senderID);
customMessage = customMessage
// .replace(/{userName}/g, userData.name)
.replace(/{oldRank}/g, currentLevel - 1)
.replace(/{currentRank}/g, currentLevel);
if (customMessage.includes("{userNameTag}")) {
isTag = true;
customMessage = customMessage.replace(/{userNameTag}/g, `@${userData.name}`);
}
else {
customMessage = customMessage.replace(/{userName}/g, userData.name);
}
formMessage.body = customMessage;
}
else {
formMessage.body = getLang("notiMessage", currentLevel);
}
if (threadData.data.rankup?.attachments?.length > 0) {
const files = threadData.data.rankup.attachments;
const attachments = files.reduce((acc, file) => {
acc.push(drive.getFile(file, "stream"));
return acc;
}, []);
formMessage.attachment = (await Promise.allSettled(attachments))
.filter(({ status }) => status == "fulfilled")
.map(({ value }) => value);
}
if (isTag) {
formMessage.mentions = [{
tag: `@${userData.name}`,
id: event.senderID
}];
}
message.reply(formMessage);
}
}
};