File size: 5,995 Bytes
0c88c2f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | module.exports.config = {
name: "adminNoti",
eventType: [
"log:thread-admins",
"log:thread-name",
"log:user-nickname",
"log:thread-call",
"log:thread-icon",
"log:thread-color",
"log:link-status",
"log:magic-words",
"log:thread-approval-mode",
"log:thread-poll"
],
version: "1.0.1",
credits: "Mirai Team & mod by Yan Maglinte",
description: "Group Information Update",
envConfig: {
autoUnsend: true,
sendNoti: true,
timeToUnsend: 10
}
};
module.exports.run = async function({ event, api, Threads, Users }) {
const { author, threadID, logMessageType, logMessageData, logMessageBody } = event;
const { setData, getData } = Threads;
const fs = require("fs");
const iconPath = __dirname + "/cache/emoji.json";
if (!fs.existsSync(iconPath)) fs.writeFileSync(iconPath, JSON.stringify({}));
if (author === threadID) return;
try {
let dataThread = (await getData(threadID)).threadInfo;
switch (logMessageType) {
case "log:thread-admins": {
if (logMessageData.ADMIN_EVENT === "add_admin") {
dataThread.adminIDs.push({ id: logMessageData.TARGET_ID });
api.sendMessage(`[ GROUP UPDATE ]\n❯ USER UPDATE ${Users.getNameUser(logMessageData.TARGET_ID)} Became a group admin`, threadID);
} else if (logMessageData.ADMIN_EVENT === "remove_admin") {
dataThread.adminIDs = dataThread.adminIDs.filter(item => item.id !== logMessageData.TARGET_ID);
api.sendMessage(`[ GROUP UPDATE ]\n❯ Remove user's admin position ${logMessageData.TARGET_ID}`, threadID);
}
break;
}
case "log:user-nickname": {
const { participant_id, nickname } = logMessageData;
if (participant_id && nickname) {
dataThread.nicknames = dataThread.nicknames || {};
dataThread.nicknames[participant_id] = nickname;
const participantName = await Users.getNameUser(participant_id);
const formattedNickname = nickname || "deleted nickname";
api.sendMessage(`[ GROUP ]\n❯ Updated nickname for ${participantName}: ${formattedNickname}.`, threadID);
}
break;
}
case "log:thread-name": {
dataThread.threadName = logMessageData.name || null;
api.sendMessage(`[ GROUP UPDATE ]\n❯ ${(dataThread.threadName) ? `Updated Group Name to: ${dataThread.threadName}` : 'Cleared the Group Name'}.`, threadID);
break;
}
case "log:thread-icon": {
const preIcon = JSON.parse(fs.readFileSync(iconPath));
dataThread.threadIcon = logMessageData.thread_icon || "👍";
if (global.configModule[this.config.name].sendNoti) {
api.sendMessage(`[ GROUP UPDATE ]\n❯ ${logMessageBody.replace("emoji", "icon")}\n❯ Original Emoji: ${preIcon[threadID] || "unknown"}`, threadID, async (error, info) => {
preIcon[threadID] = dataThread.threadIcon;
fs.writeFileSync(iconPath, JSON.stringify(preIcon));
if (global.configModule[this.config.name].autoUnsend) {
await new Promise(resolve => setTimeout(resolve, global.configModule[this.config.name].timeToUnsend * 1000));
return api.unsendMessage(info.messageID);
}
});
}
break;
}
case "log:thread-call": {
if (logMessageData.event === "group_call_started") {
const name = await Users.getNameUser(logMessageData.caller_id);
api.sendMessage(`[ GROUP UPDATE ]\n❯ ${name} STARTED A ${(logMessageData.video) ? 'VIDEO ' : ''}CALL.`, threadID);
} else if (logMessageData.event === "group_call_ended") {
const callDuration = logMessageData.call_duration;
const hours = Math.floor(callDuration / 3600);
const minutes = Math.floor((callDuration - (hours * 3600)) / 60);
const seconds = callDuration - (hours * 3600) - (minutes * 60);
const timeFormat = `${hours}:${minutes}:${seconds}`;
api.sendMessage(`[ GROUP UPDATE ]\n❯ ${(logMessageData.video) ? 'Video' : ''} call has ended.\n❯ Call duration: ${timeFormat}`, threadID);
} else if (logMessageData.joining_user) {
const name = await Users.getNameUser(logMessageData.joining_user);
api.sendMessage(`❯ [ GROUP UPDATE ]\n❯ ${name} Joined the ${(logMessageData.group_call_type == '1') ? 'Video' : ''} call.`, threadID);
}
break;
}
case "log:link-status": {
api.sendMessage(logMessageBody, threadID);
break;
}
case "log:magic-words": {
api.sendMessage(`» [ GROUP UPDATE ] Theme ${logMessageData.magic_word} added effect: ${logMessageData.theme_name}\nEmoij: ${logMessageData.emoji_effect || "No emoji "}\nTotal ${logMessageData.new_magic_word_count} word effect added`, threadID)
break;
}
case "log:thread-poll": {
const obj = JSON.parse(logMessageData.question_json);
if (logMessageData.event_type === "question_creation" || logMessageData.event_type === "update_vote") {
api.sendMessage(logMessageBody, threadID);
}
break;
}
case "log:thread-approval-mode": {
api.sendMessage(logMessageBody, threadID);
break;
}
case "log:thread-color": {
dataThread.threadColor = logMessageData.thread_color || "🌤";
if (global.configModule[this.config.name].sendNoti) {
api.sendMessage(`[ GROUP UPDATE ]\n❯ ${logMessageBody.replace("Theme", "color")}`, threadID, async (error, info) => {
if (global.configModule[this.config.name].autoUnsend) {
await new Promise(resolve => setTimeout(resolve, global.configModule[this.config.name].timeToUnsend * 1000));
return api.unsendMessage(info.messageID);
}
});
}
break;
}
}
await setData(threadID, { threadInfo: dataThread });
} catch (error) {
console.log(error);
}
};
|