【问题标题】:List enumeration is never fired列表枚举永远不会被触发
【发布时间】:2018-09-28 03:08:47
【问题描述】:

我目前正在使用 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();
    }

是运行的内容。理想情况下,它应该检测新用户咬的苹果(邀请使用的)是否已经存在于列表中,并给他们一美元(因为共享!),或者如果它不存在,就给原所有者苹果一美元(因为资本主义!),苹果列表被刷新。

基本上是机器人 -> 填充邀请列表 -> 新用户加入 -> 比较并为邀请者 +1 -> 填充邀请列表

我的代码都没有触发。为什么?任何事情都可以在这里提供帮助。它不是最干净的,因为在它工作之前清理代码是没有意义的。

谢谢。

【问题讨论】:

    标签: c# linq enumeration discord.net


    【解决方案1】:

    在不了解 Discord API 的情况下很难诊断,但如果我不得不冒险猜测,我会说第一个 await 调用就是它失败的地方。所以我看到了两个潜在的问题,要么调用没有返回,这就是为什么没有执行任何事情(如果所述列表中有项目,foreach 循环将遍历一个列表),或者函数卡在等待函数调用的结果.

    我希望这至少可以帮助您找到一些开始调查的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多