繁体   English   中英

有人可以帮我修复这个脚本吗?

[英]can someone help me fix this script?

const Discord = require("discord.js");
const client = new Discord.Client(); 
const config = require("./config.json"); 

client.on("guildMemberAdd", member =>{
  var role = member.guild.roles.find("ID", "here I put the role id");
  member.addRole(role);    
});

这个脚本给出了错误,我不知道如何修复它。 错误是:

member.guild.roles.find 不是 function

discord.js v12+ 使用Managers ,因此您必须添加缓存属性。

代替:

var role = member.guild.roles.find("ID", "here I put the role id");

和:

var role = member.guild.roles.cache.find(role => role.id === 'ID Here')

更简单的方法是使用.get()方法:

var role = member.guild.roles.cache.get("ID Here")

尽管两者都可以。


由于discord.js v12+, addRole()方法被弃用了。 相反,将其替换为:

member.roles.add(role)

请考虑阅读 Discord.js v12 文档关于在此处向成员添加角色

缓存中的东西现在可以直接在缓存中找到

并且成员/角色/用户/频道都在缓存中找到,所以

const Discord = require("discord.js");
const client = new Discord.Client(); 
const config = require("./config.json"); 

client.on("guildMemberAdd", member =>{
  var role = member.guild.roles.cache.find(role => role.id == "ROLE ID HERE");
  member.roles.add(role.id);    
});

嗨@Joaozwy(巴西人喜欢我还是不喜欢我?:)

第一件事。 为什么您会收到此错误?

来自Discord.Client的事件"guildMemberAdd"member object 作为参数发送。

它具有具有属性rolesguild属性。

但是来自member.guild.roles类型的RoleManager没有方法find

这就是为什么它会给你你收到的错误。

现在,在我看来,根据您提供给我们的可用信息,您正试图通过它的ID获取角色并添加到member 如果是这种情况,试试这个:

const Discord = require("discord.js");
const client = new Discord.Client(); 
const config = require("./config.json"); 

client.on("guildMemberAdd", member =>{
  let role = member.guild.roles.cache.find(role => role.id === "here I put the role id");
  member.roles.add(role, "Optional string saying why are you adding this role to the member");
});

请记住将字符串"here I put the role id"更改为具有您要添加给用户的正确角色 ID 的字符串。

此外, add 方法返回Promise 至少,听听错误或拒绝承诺是一个很好的做法,所以如果出现问题,您可以知道原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM