使用命令定位用户

Target Users with Commands

我正在尝试创建一个命令,它将检查提到的用户并将其保存到一个数组中,这样我就可以在上面使用一个方法,等等。

例如,给某人一个角色


将消息中提到的用户 (message.mentions.users) 保存到数组
给提到的用户指定角色(或其他方法)


Check for the user(s) mentioned and saving that to an array

不需要。 message.mentions.users 已经是一个数组,如果你愿意,你仍然可以通过创建另一个变量来保存它,但是为了给他们一个角色,你只需要执行一个命令 for each one其中

为此,我们将使用 .forEach() 方法:

var userlist = message.mentions.users; // Saving userlist to a variable
userlist.forEach(function(user){
    console.log(user); // This should log every mentioned user
});

这样您就可以轻松地为它们中的每一个执行一个命令。

但要赋予他们角色,您必须使用 Back-End API(HTTP 请求)

PUT/DELETE /api/guilds/{guildId}/members/{userId}/roles/{roleId} [1]

HTTP 请求可以用 jQuery 的 ajax 完成: (记住所有不和谐请求 Base URL 应该是 https://discordapp.com/api):

$.ajax({
    url: '/api/guilds/{guildId}/members/{userId}/roles/{roleId}',
    type: 'PUT', // Or delete
    success: function(result) {
        // Do something with the result
    }
});

您只需要将 message.mentions.users 转换为他们的 ID,您可以使用 .forEach() 循环轻松完成此操作。

更新

示例:

var userlist = message.mentions.users; // Saving userlist to a variable
userlist.forEach(function(user){
    $.ajax({
        url: '/api/guilds/' + message.guild.id + '/members/' + user + '/roles/{roleId}', // In this case the ID of the role
        type: 'PUT', // Or delete
        success: function(result) {
            // Do something with the result
        };
    });
});