TypeError: message.guild.members.filter не является функцией - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в разработке ботов. Я пытаюсь использовать бота, написанного другим разработчиком, тогда я столкнулся с этой ошибкой TypeError.

Кто-нибудь может мне помочь избавиться от этого? Мне очень нужна помощь, чтобы исправить эту ошибку.

Код приведен ниже:

const Discord = require("discord.js");
const client = new Discord.Client();
var prefix = "+";

client.on("message", message => {

    if (message.content.startsWith(prefix + "dm")) {
        if (!message.member.hasPermission("ADMINISTRATOR")) return;
        let args = message.content.split(" ").slice(1);
        var argresult = args.join(' ');
        message.guild.members.filter(m => m.presence.status !== 'offline').forEach(m => {
            m.send(`${argresult}\n ${m}`);
        })
        message.channel.send(`\`${message.guild.members.filter(m => m.presence.status !== 'online').size}\` **MESSAGE SENT** `);
        message.delete();
    };
});

Вывод:

 message.guild.members.filter(m => m.presence.status !== 'offline').forEach(m => {
                        ^

TypeError: message.guild.members.filter is not a function
    at Client.<anonymous> (C:\Users\ErfanAlin\Desktop\DM BOT V2\index.js:11:25)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\node_modules\ws\lib\event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:\Users\ErfanAlin\Desktop\DM BOT V2\node_modules\discord.js\node_modules\ws\lib\websocket.js:800:20)

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Вы используете Discord. js v12?

Если да, то замените message.guild.members.filter на message.guild.members.cache.filter.

В версии 12 все изменилось. Подробнее здесь .

0 голосов
/ 19 июня 2020

В Discord. js V12 немного изменился. Подробнее об этом можно прочитать здесь .

const OnlineMembers = message.guild.members.cache.filter(member => member.presence.status !== "offline").map(member => member.user.username).join(", ");
message.channel.send(OnlineMembers);

// Filter: Removes the offline members from the array.
// Map: Maps the array by username.
// Join: Transforms the array into a string by concatenating all of the elements in an array
...