#javascript #discord #discord.js
Вопрос:
Есть ли какой-либо способ подсчета сообщений указанного пользователя в указанном канале Discord в discord.js? Когда я использую:
const countMyMessages = async (channel, member) => {
const messages = await channel.messages.fetch()
const myMessages = message.filter(m => m.author.id === member.id)
console.log(myMessages.size)
}
Извлекается только 50 сообщений, поэтому я не могу сосчитать все сообщения пользователя. И опция limit
может иметь максимальное значение 100. /guilds/guild_id/messages/search
API, с другой стороны, недоступен для ботов.
Комментарии:
1. Я думаю, что единственный способ сделать это-получить все сообщения (партиями по 100). Я рекомендую хранить количество сообщений каждого пользователя в базе данных и либо увеличивать этот счетчик для каждого сообщения, либо обновлять его только новыми сообщениями, когда это необходимо. Если это жизнеспособное решение, дайте мне знать, и я напишу полный ответ.
Ответ №1:
Вам нужно будет использовать систему хранения для хранения такого рода статистики по Discord.
Я рекомендую вам сначала использовать SQLite (например, пакет Enmap npm).
Я могу быстро нарисовать для вас структуру, основанную на этой.
const Enmap = require("enmap");
client.messages = new Enmap("messages");
client.on("message", message => {
if (message.author.bot) return;
if (message.guild) {
const key = `${message.guild.id}-${message.author.id}`;
client.messages.ensure(key, {
user: message.author.id,
guild: message.guild.id,
messages: 0
});
client.messages.inc(key, "messages");
// Do your stuff here.
console.log(client.messages.get(key, "messages"))
}
});