public async Task Accept(IGuildUser challenger) { if (!PickupHelpers.IsInDuelChannel(Context.Channel)) { return; } _logger.LogInformation($"{nameof(Accept)} called for user '{challenger.Username}'"); var challenge = await _duelChallengeRepository.Find(challenger, (IGuildUser)Context.User); if (challenge != null) { //On accept start match await _duelChallengeRepository.Delete(challenge); var match = new DuelMatch(Context.Guild.Id, challenger.Id, Context.User.Id) { Started = true, ChallengeDate = challenge.ChallengeDate, MatchDate = DateTime.UtcNow }; await _duelMatchRepository.Save(match); await ReplyAsync($"{Context.User.Mention} has accepted the challenge from {challenger.Mention}!"); } }
// ReSharper disable once InconsistentNaming private async Task UpdateMatchAndMMR(DuelPlayer winner, DuelPlayer looser, DuelMatch match) { var mmrDiff = UpdateMMR(winner, looser); match.WinnerId = winner.Id.ToString(); match.WinnerName = winner.Name; match.LooserId = looser.Id.ToString(); match.LooserName = looser.Name; match.MMR = mmrDiff; await _duelMatchRepository.Save(match); await ReplyAsync($"{match.WinnerName} has won against {match.LooserName}").AutoRemoveMessage(10); winner.MatchHistory.Insert(0, match); winner.MatchHistory = winner.MatchHistory.Take(10).ToList(); await _duelPlayerRepository.Save(winner); looser.MatchHistory.Insert(0, match); looser.MatchHistory = looser.MatchHistory.Take(10).ToList(); await _duelPlayerRepository.Save(looser); }
private static bool IsValidMatch(DuelMatch match, IGuildUser opponent) { return((match.ChallengerId == opponent.Id.ToString() || match.ChallengeeId == opponent.Id.ToString()) && string.IsNullOrEmpty(match.WinnerId)); }
public async Task <bool> Save(DuelMatch duelMatch) { return(await _client.InsertOrMerge(duelMatch)); }