如何通过名称查找角色并向其中添加用户(discord.js)

时间:2019-09-10 04:21:25

标签: discord.js

因此,我正在尝试创建一种更通用的机器人,并且可以将其添加到多个服务器上。我已经设法使用.find("name", "announcements")重新格式化诸如宣布或加入消息之类的命令。

我的问题是,对于角色来说,这是行不通的。

我尝试了在互联网上找不到的东西,例如member.guild.roles.find("name", "Member")member.guild.roles.find(role => role.name === "Member"),但这些都不起作用。各种不同的方法都会返回不同的错误,但是通常会说一些类似的东西,而不是整数(我认为)或雪花。

这是我目前正在使用的功能:

client.on('guildMemberAdd', (member) => {
    var joinResponse = ("Hello **" + member.displayName + "**, welcome to **" + member.guild.name + "**!")
    let role = member.guild.roles.find("name", "Member");
    member.addRole(role).catch(console.error);
    member.guild.channels.find('name', 'general').send(joinResponse);

总之,我要寻找的是能够按名称获得角色并向其中添加用户的功能。

(我几乎可以肯定,因为像Dyno这样的流行机器人能够使用命令向用户添加角色。)

1 个答案:

答案 0 :(得分:0)

client.on('guildMemberAdd', (member) => {
    const joinResponse = `Hello **${member.user.username}**, welcome to: **${member.guild.name}**!`
    let role = member.guild.roles.get('Member');
    if(!role) return console.log("Role doesen't exist.");
    member.addRole(role);
    const ch = member.guild.channels.get('general');
    if(!ch) return console.log("Channel doesen't exist.");
    ch.send(joinResponse);
});//You didn't have closing brackets (Could've been a problem)

首先,您的字符串 joinResponse 是一个函数,您完全搞砸了合并它,我建议使用Template literal

我使用了get函数,因为它更易于使用和清洁,您只将ID或名称作为string传递。

要检查频道是否存在,我使用了if statementsexclamation mark,这表示不存在/为假。

如果我帮助您,请将其标记为答案,谢谢<3。如果您需要任何内容​​,请添加评论以回答问题或在Discord上给我发消息(您可以在我的stack overflow profile上找到我的鉴别器)。

有关进一步的说明,请单击蓝色词。