示例#1
0
        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);
        }