我目前正在使用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 - >填充邀请列表
我的代码都没有触发。为什么?这里有什么可以帮的。它不是最干净的,因为清洁代码没有任何意义,直到它起作用。
感谢。
答案 0 :(得分:0)
如果不了解Discord API诊断这很难,但如果我不得不猜测,我会说第一次等待呼叫就是这个问题。所以我看到两个潜在的问题,要么调用没有返回,这就是为什么没有执行任务(如果所述列表中有项目,foreach循环将遍历列表),或者函数卡住了等待函数调用的结果。
我希望这至少可以帮助你开始调查。