[英]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 作为参数发送。
但是来自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.