internal static async Task <bool> EndAsync(DiscordUser author, ulong id, string reason, bool disq = false) { if (await AnyAsync(id) == DuelState.None) { return(false); } Duel duel = duels.Find(d => d.duel.duelist1 == id || d.duel.duelist2 == id); if (duel != null) { ulong dlst1 = id == duel.duel.duelist1 ? duel.duel.duelist1 : duel.duel.duelist2, dlst2 = id == duel.duel.duelist1 ? duel.duel.duelist2 : duel.duel.duelist1; var c = await Program.bot.GetChannelAsync(Program.config.ChannelForDuels); DiscordMember mem1 = null, mem2 = null; try { mem1 = await c.Guild.GetMemberAsync(dlst1); } catch { } try { mem2 = await c.Guild.GetMemberAsync(dlst2); } catch { } await c.SendMessageAsync(string.Empty, false, Program.bot.GetEmbed($"The duel between **{mem1?.DisplayName}** and **{mem2?.DisplayName}** has interrupted!", disq ? $"**{mem1?.DisplayName}** was disqualified.\nReason: '{reason}'\n**{mem2?.DisplayName}** has won and gets **3** points." : $"Reason: '{reason}'")); await Duelists.UpdateAsync(dlst1, 0, 1, 0); await Duelists.UpdateAsync(dlst2, disq? 3 : 0, 1, disq? 1 : 0); await duel.DeleteAsync(); return(true); } return(false); }