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

问题描述 投票:0回答:1

所以我正在尝试创建一个更通用并且可以添加到多个服务器的机器人。我已经成功地使用

.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 这样的流行机器人能够使用命令为用户添加角色。)

discord.js
1个回答
1
投票
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是一个函数,你完全搞砸了合并它,我建议使用模板文字

我使用了 get 函数,因为它更容易使用且更干净,您只需将 ID 或名称作为 string 传递。

要检查是否存在通道我使用了if语句感叹号这意味着不存在/错误。

© www.soinside.com 2019 - 2024. All rights reserved.