Javascript Discord bot为不同角色提供不同级别的发薪日奖励
我试图让机器人支付不同的金额给不同的角色 问题是无论我尝试做什么,它都表示角色未定义 我查了一下这意味着什么,并尝试了一些我发现的东西。我为每个角色添加了变量,尝试使用ID,尝试使用名称。我对JS非常陌生,一般来说,我对编码也比较陌生。我尝试过“角色.查找”等方法 我查看了discord.js网站,但没有提供任何帮助。这些函数的唯一代码块很小,而且效率也很低。下面我列出了关于payday命令的代码部分Javascript Discord bot为不同角色提供不同级别的发薪日奖励,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我试图让机器人支付不同的金额给不同的角色 问题是无论我尝试做什么,它都表示角色未定义 我查了一下这意味着什么,并尝试了一些我发现的东西。我为每个角色添加了变量,尝试使用ID,尝试使用名称。我对JS非常陌生,一般来说,我对编码也比较陌生。我尝试过“角色.查找”等方法 我查看了discord.js网站,但没有提供任何帮助。这些函数的唯一代码块很小,而且效率也很低。下面我列出了关于payday命令的代码部分 if(msg==前缀+发薪日){ if(userData[sender.id+message.
if(msg==前缀+发薪日){
if(userData[sender.id+message.guild.id].lastPayday!=moment().format('w ww')){
userData[sender.id+message.guild.id].lastPayday=momente().format('w ww'))
如果([sender.id+message.guild.id].roles.has(Role=>Role.id==“741948113568137317”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“7419492497141565”)){
userData[sender.id+message.guild.id].money+=300;
}else if([sender.id+message.guild.id].roles.has(Role=>Role.id==“741948119104618537”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“741950264742903808”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“741950268677292042”)){
userData[sender.id+message.guild.id].money+=600;
}else if([sender.id+message.guild.id].roles.has(Role=>Role.id==“741948122627833937”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“741950731547836437”)){
userData[sender.id+message.guild.id].money+=900;
}else if([sender.id+message.guild.id].roles.has(Role=>Role.id==“74194813097995732”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“741949251793190927”)){
用户数据[sender.id+message.guild.id].money+=1200;
}else if([sender.id+message.guild.id].roles.has(Role=>Role.id===“741948127828901949”)| |[sender.id+message.guild.id].roles.has(Role=>Role.id==“741948125316644924”)){
userData[sender.id+message.guild.id].money+=1500;
}else if([sender.id+message.guild.id].roles.has(Role=>Role.id==“741948126004248657”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“741948124297298050”)){
userData[sender.id+message.guild.id].money+=2000;
}else if([sender.id+message.guild.id].roles.has(Role=>Role.id===“741949250287697942”)){
userData[sender.id+message.guild.id].money+=5000;
}否则{
message.channel.send({
“嵌入”:{
标题:“对不起”,
颜色:0x1E97C8,
字段:[{
姓名:“你没有工作!”,
价值观:“开始工作吧,你这个懒汉!”,
是的,
}, {
名字:“哈哈”,
值:“:P”,
内联:对
}]
}
})
用户数据[sender.id+message.guild.id].lastPayday=时刻(“1995-12-25”);
错误
if([sender.id+message.guild.id].roles.has(Role=>Role.id==“741948113568137317”)|[sender.id+message.guild.id].roles.has(Role=>Role.id==“7419492497141565”)){
TypeError:无法读取未定义的属性“has”
在客户端。(C:\Users\123\Desktop\SpaceBot\app.js:64:54)
在Client.emit(events.js:315:20)
在MessageCreateAction.handle(C:\Users\123\Desktop\SpaceBot\node\u modules\discord.js\src\client\actions\MessageCreate.js:31:14)
在Object.module.exports[作为消息\u CREATE](C:\Users\123\Desktop\SpaceBot\node\u modules\discord.js\src\client\websocket\handlers\MESSAGE\u CREATE.js:4:32)
在WebSocketManager.handlePacket(C:\Users\123\Desktop\SpaceBot\node\u modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
在WebSocketShard.onPacket(C:\Users\123\Desktop\SpaceBot\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
在WebSocketShard.onMessage(C:\Users\123\Desktop\SpaceBot\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
在WebSocket.onMessage(C:\Users\123\Desktop\SpaceBot\node\u modules\ws\lib\event target.js:125:16)
在WebSocket.emit(events.js:315:20)
在Receiver.receiverOnMessage(C:\Users\123\Desktop\SpaceBot\node\u modules\ws\lib\websocket.js:797:20)```
您忘记了缓存对象。请使用
if(
message.guild.member(发送者)//获取GuildMember对象
.roles.cache.has(roleID)){//Discord v12使用管理器,因此需要缓存对象
//某物
});
您好,谢谢您的及时回复!我想这是可行的,但现在帮会还没有定义。我试图自己修复它,但没有成功。这是我的最新尝试:const guild=new Discord.guild();guild.cache.get(“735657160964440178”);
啊,对不起,这是我的错误。使用message.guild.member(发件人)
if ([sender.id + message.guild.id].roles.has(Role => Role.id === "741948113568137317") || [sender.id + message.guild.id].roles.has(Role => Role.id === "741949249717141565" )) {
TypeError: Cannot read property 'has' of undefined
at Client.<anonymous> (C:\Users\123\Desktop\SpaceBot\app.js:64:54)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (C:\Users\123\Desktop\SpaceBot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\123\Desktop\SpaceBot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\123\Desktop\SpaceBot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
at WebSocketShard.onPacket (C:\Users\123\Desktop\SpaceBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
at WebSocketShard.onMessage (C:\Users\123\Desktop\SpaceBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
at WebSocket.onMessage (C:\Users\123\Desktop\SpaceBot\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\123\Desktop\SpaceBot\node_modules\ws\lib\websocket.js:797:20) ```