如何跟踪用户被提及的次数?
How to keep track of the number of times a user has been mentioned?
在我的机器人中,我有一个消息计数器,用于存储用户在服务器中发送消息的次数。
我试图计算一个用户在服务器中被提及的次数。有谁知道我该怎么做?
您可以使用 message.mentions.members
(或 message.mentions.users
)查看消息中的提及。您可以存储每个用户的提及次数:每次提及他们时,您都会增加计数。
var mention_count = {};
client.on('message', message => {
for (let id of message.mentions.users.keyArray()) {
if (!mention_count[id]) mention_count[id] = 1;
else mention_count[id]++;
}
});
请注意 mention_count
会在您每次重启机器人时重置,因此请记住将其存储在文件或数据库中以免丢失。
编辑:您可以在下面看到您的代码应用于提及:每次提及要计算时,它都会存储在分数的 level
值中。
client.on('message', message => {
if (!message.guild) return;
for (let id of message.mentions.users.keyArray()) if (id != message.author.id) {
let score = client.getScore.get(id, message.guild.id);
if (!score) score = {
id: `${message.guild.id}-${id}`,
user: id,
guild: message.guild.id,
points: 0,
level: 0
};
score.level++;
client.setScore.run(score);
}
});
在我的机器人中,我有一个消息计数器,用于存储用户在服务器中发送消息的次数。
我试图计算一个用户在服务器中被提及的次数。有谁知道我该怎么做?
您可以使用 message.mentions.members
(或 message.mentions.users
)查看消息中的提及。您可以存储每个用户的提及次数:每次提及他们时,您都会增加计数。
var mention_count = {};
client.on('message', message => {
for (let id of message.mentions.users.keyArray()) {
if (!mention_count[id]) mention_count[id] = 1;
else mention_count[id]++;
}
});
请注意 mention_count
会在您每次重启机器人时重置,因此请记住将其存储在文件或数据库中以免丢失。
编辑:您可以在下面看到您的代码应用于提及:每次提及要计算时,它都会存储在分数的 level
值中。
client.on('message', message => {
if (!message.guild) return;
for (let id of message.mentions.users.keyArray()) if (id != message.author.id) {
let score = client.getScore.get(id, message.guild.id);
if (!score) score = {
id: `${message.guild.id}-${id}`,
user: id,
guild: message.guild.id,
points: 0,
level: 0
};
score.level++;
client.setScore.run(score);
}
});