Discord.jsTypeError:无法读取未定义的属性“ add”

问题描述

所以这是代码:

final int TIME_TO_WAIT = 20;

public void onMessage(Message,message)
{
   :
   :
   int t  =   message.getIntProperty("JMSXDeliveryCount");
   if(t > 1)
   {
     // Figure out a way to wait for (TIME_TO_WAIT * t)
   
   }

}
catch(Exception e)
{
    // Do some logging/cleanup etc.
    throw new RunimeException(e);// this causes a message retry
}

运行机器人时,出现错误消息:

const mutedRole = message.guild.roles.cache.find(role => role.name === "Muted");
        
        if (!mutedUser) return message.channel.send()
        if (!message.author) return;
   
        if (!mutedRole) {
            message.guild.roles.create({
                data: {
                  name: 'Muted',color: '#6C877C',permissions: ["CREATE_INSTANT_INVITE","VIEW_CHANNEL"],},})
                .catch(console.error);
        }
        mutedUser.roles.add(mutedRole).catch(console.error);

从代码上可以看到,我添加了机器人将在其中扮演角色的部分(当角色不可用时)。但是,它仍然认为该角色永远不存在。

在复制此代码之前,我还编写了如下代码:

2020-08-14T05:22:08.731213+00:00 app[Worker.1]: TypeError: Cannot read property 'add' of undefined
2020-08-14T05:22:08.731236+00:00 app[Worker.1]:     at Object.execute (/app/commands/mute.js:69:29)
2020-08-14T05:22:08.731236+00:00 app[Worker.1]:     at Client.<anonymous> (/app/bread.js:111:14)
2020-08-14T05:22:08.731238+00:00 app[Worker.1]:     at Client.emit (events.js:315:20)
2020-08-14T05:22:08.731239+00:00 app[Worker.1]:     at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
2020-08-14T05:22:08.731241+00:00 app[Worker.1]:     at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
2020-08-14T05:22:08.731242+00:00 app[Worker.1]:     at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
2020-08-14T05:22:08.731242+00:00 app[Worker.1]:     at WebSocketShard.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
2020-08-14T05:22:08.731242+00:00 app[Worker.1]:     at WebSocketShard.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
2020-08-14T05:22:08.731243+00:00 app[Worker.1]:     at WebSocket.onMessage (/app/node_modules/ws/lib/event-target.js:125:16)
2020-08-14T05:22:08.731244+00:00 app[Worker.1]:     at WebSocket.emit (events.js:315:20)

结果仍然相同。 我还将机器人的角色放在了测试服务器上所有角色的最顶层。谁能找到原因?

我目前正在使用discord.js v12和稳定版本的节点。

注意:此处为完整代码:https://github.com/centralomd/breadbot/blob/master/commands/mute.js

解决方法

错误来自第14行:

const mutedUser = message.mentions.users.first() || message.guild.members.get(args[0])

如果message.mentions.users集合中没有提及,则您尝试使用GuildMember获得message.guild.members.get()

Discord JS v12引入了管理器的概念,您将不再能够在Collection.get()Client.users之类的数据结构上直接使用诸如Guild.members之类的Collection方法。

您必须使用以下方法进行更改:

const mutedUser = message.mentions.users.first() || message.guild.members.cache.get(args[0])
if (!mutedUser) return message.channel.send("Invalid user.");

注意:message.mentions.users也将使用户进入其他行会。我建议您使用message.mentions.members

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...