列表枚举永远不会被触发

时间:2018-04-18 02:16:49

标签: c# linq enumeration discord.net

我目前正在使用Discord机器人尝试跟踪用户邀请,但我们会在这里使用苹果。

因此,当机器人启动时,它会将服务器已经知道的苹果列表放在一起。当用户加入时,此代码:

private async Task NewUser(SocketGuildUser user)
    {
        var inv = await GetGuild().GetInvitesAsync();
        foreach (IInviteMetadata i in inv)
        {
            var existing = invites.Any(x => x.Code == i.Code);
            var prev = invites.FirstOrDefault(x => x.Code == i.Code);
            if (!existing)
            {
                new UserManager(client, i.Inviter).UpdateUser();
                Console.WriteLine("Updated " + i.Inviter + "'s ");
                break;
            }
            else if (prev.Uses > i.Uses)
            {
                new UserManager(client, i.Inviter).UpdateUser();
                Console.WriteLine("Updated " + i.Inviter + "'s ");
                break;
            }

        }
        await user.SendMessageAsync("Hey " + user.Username + "! I wanna give you a big warm welcome to " +
            guildName + ". I'd give you a big warm hug if I could but...you know, I'm a bot and all. It would be cold.");
        var newbie = user.Guild.Roles.FirstOrDefault(x => x.Name == "Newbie");
        await user.AddRoleAsync(newbie);
        Update();
    }

是什么运行。理想情况下,它应该检测新用户是否咬了一口(邀请已使用)已经存在于List中,并给他们一美元(因为共享!),或者如果它不存在,只需给原始所有者一美元的苹果(因为资本主义!)和苹果清单被刷新。

基本上是bot - >填充邀请列表 - >新用户加入 - > Inviter的比较和+1 - >填充邀请列表

我的代码都没有触发。为什么?这里有什么可以帮的。它不是最干净的,因为清洁代码没有任何意义,直到它起作用。

感谢。

1 个答案:

答案 0 :(得分:0)

如果不了解Discord API诊断这很难,但如果我不得不猜测,我会说第一次等待呼叫就是这个问题。所以我看到两个潜在的问题,要么调用没有返回,这就是为什么没有执行任务(如果所述列表中有项目,foreach循环将遍历列表),或者函数卡住了等待函数调用的结果。

我希望这至少可以帮助你开始调查。