[store] hide nsfw content behind spoiler

This commit is contained in:
Andriy
2023-01-02 23:31:05 +02:00
parent 996147436b
commit ff78d8e2ae
5 changed files with 26 additions and 7 deletions
+14 -2
View File
@@ -7,6 +7,7 @@ using Kruzya.TelegramBot.Core.Extensions;
using Kruzya.TelegramBot.Core.Service; using Kruzya.TelegramBot.Core.Service;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Telegram.Bot; using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums; using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups; using Telegram.Bot.Types.ReplyMarkups;
using West.TelegramBot.ContentStore.Service; using West.TelegramBot.ContentStore.Service;
@@ -113,13 +114,24 @@ public class Store : BotEventHandler
var randomMedia = await mediaService!.GetRandomMediaAsync(); var randomMedia = await mediaService!.GetRandomMediaAsync();
var file = randomMedia.File; var file = randomMedia.File;
switch (randomMedia.Type) switch (randomMedia.Type)
{ {
case InputMediaType.Photo: case InputMediaType.Photo:
await Bot.SendPhotoAsync(Chat.Id, file, 0, randomMedia.Caption, replyToMessageId: messageId, parseMode: ParseMode.Html); await Bot.SendPhotoAsync(Chat.Id, file,
caption: randomMedia.Caption,
replyToMessageId: messageId,
parseMode: ParseMode.Html,
hasSpoiler: randomMedia.Nsfw
);
break; break;
case InputMediaType.Video: case InputMediaType.Video:
await Bot.SendVideoAsync(Chat.Id, file, caption: randomMedia.Caption, replyToMessageId: messageId, parseMode: ParseMode.Html); await Bot.SendVideoAsync(Chat.Id, file,
caption: randomMedia.Caption,
replyToMessageId: messageId,
parseMode: ParseMode.Html,
hasSpoiler: randomMedia.Nsfw
);
break; break;
} }
} }
+3 -1
View File
@@ -5,14 +5,16 @@ namespace West.TelegramBot.ContentStore.Model;
public class RandomMedia public class RandomMedia
{ {
public RandomMedia(IInputFile file, string? caption = null) public RandomMedia(IInputFile file, string? caption = null, bool nsfw = false)
{ {
File = file; File = file;
Caption = caption; Caption = caption;
Nsfw = nsfw;
} }
public IInputFile File; public IInputFile File;
public string? Caption; public string? Caption;
public bool Nsfw;
public InputMediaType Type { get; set; } = InputMediaType.Photo; public InputMediaType Type { get; set; } = InputMediaType.Photo;
} }
@@ -45,7 +45,8 @@ public abstract class AbstractKittiesService : IRandomMediaService
return new RandomMedia( return new RandomMedia(
new InputFile(await response.Content.ReadAsStreamAsync()), new InputFile(await response.Content.ReadAsStreamAsync()),
new HtmlString().Url(videoSource, videoTitle).ToString() new HtmlString().Url(videoSource, videoTitle).ToString(),
true
); );
} }
@@ -24,9 +24,13 @@ public class AnimBoobsService : IRandomMediaService
public async Task<RandomMedia> GetRandomMediaAsync() public async Task<RandomMedia> GetRandomMediaAsync()
{ {
var fileName = await _httpClient.GetStringAsync("index.php"); var fileName = await _httpClient.GetStringAsync("index.php");
return new RandomMedia(new InputFileUrl($"https://westdev.me/_boobs/media/{fileName}")) // https://bugs.telegram.org/c/23674 workaround
var video = await _httpClient.GetStreamAsync($"https://westdev.me/_boobs/media/{fileName}");
return new RandomMedia(new InputFile(video, fileName))
{ {
Type = InputMediaType.Video Type = InputMediaType.Video,
Nsfw = true
}; };
} }
@@ -29,7 +29,7 @@ public class OBoobsService : IRandomMediaService
var boobsItem = boobsResponse![0]; var boobsItem = boobsResponse![0];
var boobsId = boobsItem.Id.ToString("D5"); var boobsId = boobsItem.Id.ToString("D5");
return new RandomMedia(new InputFileUrl($"https://media.oboobs.ru/boobs/{boobsId}.jpg"), boobsItem.Model); return new RandomMedia(new InputFileUrl($"https://media.oboobs.ru/boobs/{boobsId}.jpg"), boobsItem.Model, true);
} }
public async Task<bool> CanView(Chat chat, User user) public async Task<bool> CanView(Chat chat, User user)