单击反应时不发布角色

时间:2020-10-30 07:30:03

标签: c# discord.net

我的异常表明用户= null,但我不明白为什么? UserId在调试器中传递

 private async Task ReactionAdd(Cacheable<IUserMessage, ulong> cache, ISocketMessageChannel socketMessageChannel, SocketReaction reaction)
            {
                if (reaction.MessageId == 771361839917170748)
                {
                    var emote = Emote.Parse("<:NepSmug:740928682310500412>").ToString();
    
                    if (reaction.Emote.ToString() == emote)
                    {
                        var sockettextChannel = socketMessageChannel as SocketTextChannel; 
                        
                            ulong roleid = 741342300499738715;
    
                            var role = sockettextChannel.Guild.GetRole(roleid);
                            var user = sockettextChannel.Guild.GetUser(reaction.UserId);
    
                            await user.AddRoleAsync(role);
                    }
                }
            }

1 个答案:

答案 0 :(得分:1)

该用户为null可能是由于Discrod API的最新更改(请参考this)引起的。导致Guild.User信息的更改未正确下载。

  1. 首先要检查的是是否在Context.Guild上分配了用户(您也可以在Context.Guild.Users上验证Discord服务器中的用户是否相等)。
  2. 第二,您需要在Discord Bot上启用此功能 enter image description here