TypeError:message.guild.members.filter不是一个函数[重复]

Posted

技术标签:

【中文标题】TypeError:message.guild.members.filter不是一个函数[重复]【英文标题】:TypeError: message.guild.members.filter is not a function [duplicate] 【发布时间】:2020-10-09 03:03:46 【问题描述】:

我是机器人开发的新手。 我正在尝试使用由另一个开发人员编码的机器人,然后我遇到了这个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)

【问题讨论】:

【参考方案1】:

您使用的是 discord.js v12 吗?

如果是,则将message.guild.members.filter 替换为message.guild.members.cache.filter

第 12 版发生了一些变化。阅读更多 here。

【讨论】:

【参考方案2】:

在 Discord.js V12 中,情况发生了一些变化。你可以阅读更多关于它的信息here。

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

【讨论】:

以上是关于TypeError:message.guild.members.filter不是一个函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

Django TypeError - TypeError: issubclass() arg 1 必须是一个类

pyspark:TypeError:'float'对象不可迭代

Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's

TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在

TypeError: jQueryxxxxxx 不是函数