public async Task WarnAlreadySeasonAlreadyRequestedAsync(TvShow tvShow, TvSeason requestedSeason) { var messageContent = Language.Current.DiscordCommandTvRequestAlreadyExistSeason.ReplaceTokens(tvShow, requestedSeason.SeasonNumber); var buttonMessage = Language.Current.DiscordCommandRequestedButton; if (requestedSeason is FutureTvSeasons) { if (tvShow.AllSeasonsAvailable()) { messageContent = Language.Current.DiscordCommandTvRequestAlreadyExistFutureSeasonAvailable; buttonMessage = Language.Current.DiscordCommandAvailableButton; } else if (tvShow.AllSeasonsFullyRequested()) { messageContent = Language.Current.DiscordCommandTvRequestAlreadyExistFutureSeasonRequested; } else { messageContent = Language.Current.DiscordCommandTvRequestAlreadyExistFutureSeasonFound; } } var embed = GenerateTvShowDetailsAsync(tvShow); var requestButton = new DiscordButtonComponent(ButtonStyle.Primary, $"TTT/{_interactionContext.User.Id}/{tvShow.TheTvDbId}/999", buttonMessage, true); var builder = (await AddPreviousDropdownsAsync(tvShow, new DiscordWebhookBuilder().AddEmbed(embed))).WithContent(messageContent).AddComponents(requestButton); await _interactionContext.EditOriginalResponseAsync(builder); }
public async Task AskForSeasonNotificationRequestAsync(TvShow tvShow, TvSeason selectedSeason) { var message = Language.Current.DiscordCommandTvNotificationRequestSeason.ReplaceTokens(tvShow, selectedSeason.SeasonNumber); if (selectedSeason is FutureTvSeasons) { if (tvShow.AllSeasonsAvailable()) { message = Language.Current.DiscordCommandTvNotificationRequestFutureSeasonAvailable; } else if (tvShow.AllSeasonsFullyRequested()) { message = Language.Current.DiscordCommandTvNotificationRequestFutureSeasonRequested; } else { message = Language.Current.DiscordCommandTvNotificationRequestFutureSeasonMissing; } } var requestButton = new DiscordButtonComponent(ButtonStyle.Primary, $"TNR/{_interactionContext.User.Id}/{tvShow.TheTvDbId}/{selectedSeason.GetType().Name.First()}/{selectedSeason.SeasonNumber}", Language.Current.DiscordCommandNotifyMe, false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔔"))); var embed = GenerateTvShowDetailsAsync(tvShow); var builder = (await AddPreviousDropdownsAsync(tvShow, new DiscordWebhookBuilder().AddEmbed(embed))).AddComponents(requestButton).WithContent(message); await _interactionContext.EditOriginalResponseAsync(builder); }
public async Task <bool> AskForSeasonNotificationRequestAsync(TvShow tvShow, TvSeason requestedSeason) { var message = $"Season {requestedSeason.SeasonNumber} has already been requested, you can click on the 🔔 reaction to be notified when it becomes available."; if (requestedSeason is FutureTvSeasons) { if (tvShow.AllSeasonsAvailable()) { message = $"All seasons are already available, you can click on the 🔔 reaction to be notified when future seasons becomes available."; } else if (tvShow.AllSeasonsAlreadyRequested()) { message = $"All seasons have been already requested, you can click on the 🔔 reaction to be notified when future seasons becomes available."; } else { message = $"Future seasons have already been requested, you can click on the 🔔 reaction to be notified when future seasons becomes available."; } } await _lastCommandMessage?.AddReactionAsync(new Emoji("🔔")); await ReplyToUserAsync(message); var reaction = await WaitForReactionAsync(Context, _lastCommandMessage, new Emoji("🔔")); return(reaction != null); }
public async Task WarnShowHasEndedAsync(TvShow tvShow) { var embed = GenerateTvShowDetailsAsync(tvShow); if (tvShow.AllSeasonsAvailable()) { var requestButton = new DiscordButtonComponent(ButtonStyle.Primary, $"TTT/{_interactionContext.User.Id}/{tvShow.TheTvDbId}/999", Language.Current.DiscordCommandAvailableButton, true); var builder = (await AddPreviousDropdownsAsync(tvShow, new DiscordWebhookBuilder().AddEmbed(embed))).WithContent(Language.Current.DiscordCommandTvRequestAlreadyAvailableSeries).AddComponents(requestButton); await _interactionContext.EditOriginalResponseAsync(builder); } else { var requestButton = new DiscordButtonComponent(ButtonStyle.Primary, $"TTT/{_interactionContext.User.Id}/{tvShow.TheTvDbId}/999", Language.Current.DiscordCommandRequestedButton, true); var builder = (await AddPreviousDropdownsAsync(tvShow, new DiscordWebhookBuilder().AddEmbed(embed))).AddComponents(requestButton).WithContent(Language.Current.DiscordCommandTvRequestAlreadyExistSeries); await _interactionContext.EditOriginalResponseAsync(builder); } }
private async Task <DiscordWebhookBuilder> AddPreviousDropdownsAsync(TvShow tvShow, DiscordWebhookBuilder builder) { var selectors = (await _interactionContext.GetOriginalResponseAsync()).Components.SelectMany(x => x.Components).OfType <DiscordSelectComponent>(); DiscordSelectComponent previousTvSelector = selectors.FirstOrDefault(x => x.CustomId.StartsWith("TRS", true, null)); if (previousTvSelector != null) { var tvSelector = new DiscordSelectComponent(previousTvSelector.CustomId, GetFormatedTvShowTitle(tvShow), previousTvSelector.Options); builder.AddComponents(tvSelector); } DiscordSelectComponent previousSeasonSelector = selectors.FirstOrDefault(x => x.CustomId.StartsWith("TSS", true, null)); if (previousSeasonSelector != null) { if (!tvShow.AllSeasonsAvailable() && previousSeasonSelector != null && previousSeasonSelector.Options.Any(x => x.Value.Contains(tvShow.TheTvDbId.ToString(), StringComparison.OrdinalIgnoreCase))) { if (!_interactionContext.Data.CustomId.StartsWith("TRS", true, null)) { var newOptions = tvShow.Seasons.Select(x => new DiscordSelectComponentOption(GetFormattedSeasonName(tvShow, x), $"{tvShow.TheTvDbId.ToString()}/{x.SeasonNumber.ToString()}")).ToDictionary(x => x.Value, x => x); var oldOptions = previousSeasonSelector.Options; var currentOptions = oldOptions.Select(x => new DiscordSelectComponentOption(newOptions.ContainsKey(x.Value) ? newOptions[x.Value].Label : x.Label, x.Value)).ToList(); string defaultSelectedValue = currentOptions.First().Label; try { defaultSelectedValue = _interactionContext.Data.Values.Any() ? currentOptions.Single(x => x.Value == _interactionContext.Data.Values.Single()).Label : currentOptions.Single(x => x.Value == string.Join("/", _interactionContext.Data.CustomId.Split("/").Skip(2))).Label; } catch { } var seasonSelector = new DiscordSelectComponent(previousSeasonSelector.CustomId, defaultSelectedValue, currentOptions); builder.AddComponents(seasonSelector); } } } return(builder); }
public Task WarnAlreadyNotifiedForSeasonsAsync(TvShow tvShow, TvSeason requestedSeason) { if (requestedSeason is FutureTvSeasons) { if (tvShow.AllSeasonsAvailable()) { return(ReplyToUserAsync($"All seasons are available and you will be notified when new seasons become available.")); } else if (tvShow.AllSeasonsAlreadyRequested()) { return(ReplyToUserAsync($"All seasons have already been requested and you will be notified when new seasons become available.")); } else { return(ReplyToUserAsync($"Future seasons have already been requested and you will be notified when they becomes available.")); } } return(ReplyToUserAsync($"Season {requestedSeason.SeasonNumber} has already been requested and you will be notified when it becomes available.")); }
public Task WarnShowHasEnded(TvShow tvShow) { return(ReplyToUserAsync($"This show has ended, and all seasons {(tvShow.AllSeasonsAvailable() ? "are available" : "have been requested")}.")); }