因此,我一直在努力让我的机器人为用户添加角色。

这是获取用户信息的代码。

仅针对上下文args [1]将是用户的ID。

var user = _client.GetUser(Convert.ToUInt64(args[1]));


我做了检查,看它是否确实通过执行Console.WriteLine(user.Username);正确地处理了它,并且确实吐出了用户名。现在的问题是,当我尝试通过执行await (user as IGuildUser).AddRoleAsync(role);来向所述用户添加角色时,它给我一个错误,声称它为null。

我通过这样做再次检查了:

if ((user as IGuildUser) is null)
{
    Console.WriteLine("User is null");
}


它确实是空的。

知道可能是什么问题吗?

最佳答案

null已经是user时,结果将是null,或者无法实现userIGuildUser的转换。
最后一个,就是当前代码中的情况

GetUser()函数返回一个SocketUser,它是一个IUser,而不是一个IGuildUser

如果需要IGuildUser,则首先必须确定要从哪个服务器获取IGuildUser。由于每个公会所属的同一个用户将有不同版本。

假设您已经知道要获取的行会,并且也将其传递到args中,则可以改用。

var guild = _client.GetGuild(args[2]);
var guildUser = guild.GetUser(args[1]);

08-19 05:34