【问题标题】:problem with my function with discord.js for my bot我的机器人的 discord.js 功能存在问题
【发布时间】:2020-07-21 15:04:45
【问题描述】:

我想创建一个脚本来知道哪个服务器中有我的机器人并创建我的邀请,第二个我想创建一个向所有成员发送一条私人消息的命令(不是它不是突袭机器人)

  1. 脚本:

    client.on("ready", () => {
    client.user.setActivity('ESPADA');
        client.guilds.forEach(serv => {
          serv.channels.random().createInvite().then(invite => console.log(`>${serv.name} | ${invite}`))
          .catch(console.log(`>${serv.name} | Entrain d'envoyer une invite... `));
        });

  1. 还有我的错误:

    (node:10752) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'forEach' of undefined 在 Client.client.on (c:\Users\mathis\Downloads\self bot ash\Raid.js:10:18) 在 Client.emit (events.js:189:13) 在 WebSocketManager.triggerClientReady (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketManager.js:433:17) 在 WebSocketManager.checkShardsReady (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketManager.js:417:10) 在 WebSocketShard.shard.on.unavailableGuilds (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketManager.js:199:14) 在 WebSocketShard.emit (events.js:189:13) 在 WebSocketShard.checkReady (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:466:12) 在 WebSocketShard.onPacket (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:438:16) 在 WebSocketShard.onMessage (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10) 在 WebSocket.onMessage (c:\Users\mathis\node_modules\ws\lib\event-target.js:120:16)

  2. 我的 DM 命令

    
        if(message.content === "!mp"){
            if(message.deletable) message.delete();
            i = 0;
            message.guild.members.forEach(member => { ```
    
    4. the error :
    
    TypeError: message.guild.members.forEach is not a function
        at Client.<anonymous> (c:\Users\mathis\Downloads\self bot ash\Raid.js:98:31)
        at Client.emit (events.js:194:15)
        at MessageCreateAction.handle (c:\Users\mathis\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
        at Object.module.exports [as MESSAGE_CREATE] (c:\Users\mathis\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
        at WebSocketManager.handlePacket (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
        at WebSocketShard.onPacket (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:435:22)
        at WebSocketShard.onMessage (c:\Users\mathis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
        at WebSocket.onMessage (c:\Users\mathis\node_modules\ws\lib\event-target.js:120:16)
        at WebSocket.emit (events.js:189:13)
        at Receiver.receiverOnMessage (c:\Users\mathis\node_modules\ws\lib\websocket.js:801:20)
    

感谢您的回复!

【问题讨论】:

    标签: node.js discord discord.js


    【解决方案1】:

    这似乎是您的 discord.js 版本为 v12 或更高版本(至少在您的 DM 命令中)的问题。
    从 v12 开始,Client#guildsGuild#members 不再返回 Collection 相反,他们返回Manager。所以现在 Guild#members 返回一个 GuildMemberManager 并且 Client#guilds 返回一个 GuildManager

    幸运的是,仍然有一种方法可以访问各自的经理集合,那就是:&lt;SomeManager&gt;.cache
    cache 属性在每个单独的 Manager 中无一例外(因为它是 BaseManager 中的属性)。
    因此,要访问 client.guildsguild.members 集合,您需要执行以下操作:

    Client#guilds:

    // This returns the collection: Collection<Snowflake, Guild>
    // which then you can use methods on such as .forEach() or .every()
    client.guilds.cache; 
    
    // Using .forEach()
    client.guilds.cache.forEach(guild => console.log(guild.name));
    
    

    Guild#members:

    // This returns the collection: Collection<Snowflake, GuildMember>
    // which then you can use methods on such as .forEach() or .every()
    guild.members.cache;
    
    // Using .forEach()
    guild.members.cache.forEach(member => console.log(member.displayName));
    

    还有一些其他的 Manager 类型,我建议您咨询 this 以查看 v12 中的更改。 youtube 上的旧教程使用 discord.js v11 或更低版本,我还没有看到任何更新版本。

    【讨论】:

      【解决方案2】:

      我的建议是使用every 而不是forEach;我以前也遇到过这样的问题。

      附:如果这是一个自我机器人,请记住他们反对 Discord 的 terms of service

      【讨论】:

        猜你喜欢
        • 2020-08-25
        • 2020-09-22
        • 2020-08-04
        • 2021-04-07
        • 2021-07-25
        • 2012-10-04
        • 2022-12-21
        • 2022-01-12
        • 2020-07-26
        相关资源
        最近更新 更多