goat
command
activemember
Show top active members
0
views
0
likes
0
installs
Aliases: am
raw source
module.exports = {
config: {
name: "activemember",
aliases: ["am"],
version: "1.0.0",
author: "๐๐๐๐ฎ๐
",
countDown: 5,
role: 0,
shortDescription: "Show top active members",
longDescription: "Show the top 15 active members by message count",
category: "box chat",
guide: "{pn}"
},
onStart: async function ({ api, event }) {
const threadID = event.threadID;
try {
const threadInfo = await api.getThreadInfo(threadID, {
participantIDs: true
});
const messageCounts = {};
for (const id of threadInfo.participantIDs) {
messageCounts[id] = 0;
}
const messages = await api.getThreadHistory(threadID, 1000);
for (const message of messages) {
if (messageCounts[message.senderID] !== undefined) {
messageCounts[message.senderID]++;
}
}
const topUsers = Object.entries(messageCounts)
.sort((a, b) => b[1] - a[1])
.slice(0, 15);
let result = `โญโโ ๐๐๐ญ๐ข๐ฏ๐ ๐๐๐ฆ๐๐๐ซ๐ฌ
โ
`;
const mentions = [];
for (let i = 0; i < topUsers.length; i++) {
const [userID, count] = topUsers[i];
try {
const userInfo = await api.getUserInfo(userID);
const name = userInfo[userID]?.name || "Unknown User";
result += `โโโค ${i + 1}. ${name}\n`;
result += `โ โโ ๐ฌ ${count} messages\n`;
mentions.push({
tag: name,
id: userID,
type: "user"
});
if (i < topUsers.length - 1) {
result += `โ\n`;
}
} catch {
result += `โโโค ${i + 1}. Unknown User\n`;
result += `โ โโ ๐ฌ ${count} messages\nโ\n`;
}
}
result += `โฐโโ ๐๐๐ซ๐ฎ๐'๐ฌ ๐๐จ๐ญ`;
return api.sendMessage(
{
body: result,
mentions
},
threadID
);
} catch (error) {
console.error(error);
return api.sendMessage(
"โ Failed to get active member list.",
threadID,
event.messageID
);
}
}
};