[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 Microsoft.Extensions.DependencyInjection;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
using West.TelegramBot.ContentStore.Service;
@@ -113,13 +114,24 @@ public class Store : BotEventHandler
var randomMedia = await mediaService!.GetRandomMediaAsync();
var file = randomMedia.File;
switch (randomMedia.Type)
{
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;
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;
}
}
+3 -1
View File
@@ -5,14 +5,16 @@ namespace West.TelegramBot.ContentStore.Model;
public class RandomMedia
{
public RandomMedia(IInputFile file, string? caption = null)
public RandomMedia(IInputFile file, string? caption = null, bool nsfw = false)
{
File = file;
Caption = caption;
Nsfw = nsfw;
}
public IInputFile File;
public string? Caption;
public bool Nsfw;
public InputMediaType Type { get; set; } = InputMediaType.Photo;
}
@@ -45,7 +45,8 @@ public abstract class AbstractKittiesService : IRandomMediaService
return new RandomMedia(
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()
{
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 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)