因此,我一直在努力让我的机器人为用户添加角色。
这是获取用户信息的代码。
仅针对上下文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
,或者无法实现user
到IGuildUser
的转换。
最后一个,就是当前代码中的情况GetUser()
函数返回一个SocketUser
,它是一个IUser
,而不是一个IGuildUser
。
如果需要IGuildUser
,则首先必须确定要从哪个服务器获取IGuildUser
。由于每个公会所属的同一个用户将有不同版本。
假设您已经知道要获取的行会,并且也将其传递到args中,则可以改用。
var guild = _client.GetGuild(args[2]);
var guildUser = guild.GetUser(args[1]);