【问题标题】:Add role to user from DMs?从 DM 向用户添加角色?
【发布时间】:2018-09-10 16:13:41
【问题描述】:

所以我正在为我的一个 Discord 服务器制作一个验证机器人,但遇到了一个问题。

目的: 当用户第一次加入时,他们将只被允许在一个特定的频道中交谈,即验证频道。当他们输入$verify {username on-site} 时,机器人将在服务器内回复,告诉用户检查他们的 DM 以继续。将给出一个链接到数据库中验证行的唯一字符串,并告知不和谐用户将其现场状态更改为给定的唯一 ID。一旦他们这样做了,他们将被赋予“已验证”的角色,并能够在不和谐中发言。

问题: 当一切顺利,并且用户准备好在不和谐服务器上被赋予角色时,机器人将不会赋予角色。我假设这是因为机器人试图赋予角色的用户没有链接到它的实际不和谐服务器,因为它在 DM 中。

我在寻找什么: 如果可能,请给我一个示例,说明如何从 DM 或文档中为不和谐服务器上的用户分配角色。那真的很有帮助!

代码:我只包含重要的部分,没有其他错误。

snekfetch.get("https://vertineer.com/api/getUniq.php?discord_id="+message.author.id).then(function(r){
                    console.log("here 2");
                    let uniq = JSON.parse(r.text);
                    if(uniq.id == uniq.status){
                        message.member.addRole("Verified");
                        message.reply("Success!");
                    } else {
                        message.reply("Looks like you didn't change your status to `"+uniq.id+"`, try again with `$finish`.");
                    }
                });

【问题讨论】:

  • 您只能为member 添加角色,而不能为author 添加角色。
  • 那么我如何从 DM 用户那里获取成员类?还要感谢您发现该错误,但这仍然无法解决。

标签: javascript discord discord.js


【解决方案1】:

如果这仅适用于一台服务器,您可以这样做:

client.guilds.get('myguildID').members.get(message.author.id).addRole('193654001089118208')

此外,要为用户赋予角色,您不能使用该名称。您需要使用 ID 或角色对象。
如果您希望使用该名称,则需要执行以下操作:

var role = client.guilds.get('myguildID').roles.find(role => role.name === "Verified");
client.guilds.get('myguildID').members.get(message.author.id).addRole(role);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2021-06-17
    • 2021-11-29
    • 1970-01-01
    • 2018-09-03
    • 2021-06-11
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多