private async Task checkMessage(SocketMessage arg)
{
IGuildUser user = (IGuildUser)arg.Author;
if (!user.IsBot)
{
if (arg.Author.Role == "pop")
{
var emoji = new Emoji("ud83dudca9");
await arg.AddReactionAsync(emoji);
}
}
}
我想检查写消息的用户的角色,如果有某个角色,那么执行某个操作,但是我不明白如何检查用户的角色。即使阅读文档,我也什么都不懂。
我试图通过SocketGuildUser获取角色,但没有任何结果。
if (arg.Author.Role == "pop")
在IGuildUser上没有role属性,可能这是一个拼写错误,您的意思是说。roles
在这种情况下,。roles返回用户角色的集合,因此将其与"pop"进行匹配;永远不会返回真。
我已经编辑了您的代码,通过使用linq查询用户的角色集合,寻找名称为"pop"
private async Task checkMessage(SocketMessage arg)
{
if (arg.Author.IsBot) return;
if (arg.Author is SocketGuildUser user)
{
if (user.Roles.Any(r => r.Name == "pop"))
{
var emoji = new Emoji("ud83dudca9");
await arg.AddReactionAsync(emoji);
}
}
}