public async Task Victoria(CommandContext context, [Description("El usuario al que le ganaste")] DiscordMember targetUser = null, [RemainingText] string resultStr = null) { var callingUser = context.Member; if (callingUser == targetUser) { return; } if (targetUser == null) { await context.ReplyAsync("Faltó escribir el oponente."); return; } if (targetUser.IsBot) { await context.ReplyAsync("No puedes reportar una victoria contra un bot!"); return; } if (string.IsNullOrWhiteSpace(resultStr)) { await context.ReplyAsync("Faltó escribir el resultado"); return; } var messageValid = ResultService.GetResult(callingUser, targetUser, resultStr, out Result result); if (!messageValid) { await context.ReplyAsync($"No se escribió bien el resultado: {resultStr}. Ejemplo: 2-1"); return; } var generalMessage = $"Resultado: \n\t{result.winner}\t{result.loser}. {result.message}"; await targetUser.SendMessageAsync($"El usuario {callingUser.Mention} reportó una victoria {result.winner.score}-{result.loser.score} contra ti."); var channelName = ChannelRedirection.GetRedirectedChannel(context.Channel.Name); var channel = GuildService.FindTextChannel(context, channelName); var admins = GuildService.FindRole(context, "admin"); if (channel == null) { var roles = callingUser.Roles; var roleText = GuildService.GetEntityNames(roles); generalMessage = $"{generalMessage}\nCanal: {context.Channel.Name} Roles: {roleText}"; channelName = ChannelRedirection.TargetChannelName; channel = GuildService.FindTextChannel(context, channelName); if (channel == null) { await context.ReplyAsync($"{generalMessage}"); return; } } await GuildService.SendMessageToTextChannel(channel, generalMessage, admins); await context.ReplyAsync($"{generalMessage}"); var hasAdmin = callingUser.Roles.Where(role => role.Name.Contains("admin")).Count() > 0; if (!hasAdmin) { var interaction = context.Client.GetInteractivity(); await context.RespondAsync($"{targetUser.Mention} confirma la victoria de {callingUser.DisplayName}. Sólo escribe sí o no."); var response = await interaction.WaitForMessageAsync(context.WithPredicate().ToUser (targetUser).InSameChannel()); if (response.TimedOut || response.Result.Content.Contains("no")) { await context.RespondAsync( $"{callingUser.Mention} no se ha aceptado tu victoria. Revisa si hay un problema o contacta a un administrador."); return; } } if (await DBConection.SetMatch(context.Guild.Id, callingUser, targetUser)) { await context.RespondAsync($"Se ha reportado la victoria de {callingUser.DisplayName}"); } else { await context.RespondAsync($"No hay peleas pendientes contra {targetUser.DisplayName}!"); } }