spoiler filtering

This commit is contained in:
Klemek
2021-05-19 15:11:29 +02:00
parent da5e3fdb35
commit a8b1ede962
6 changed files with 69 additions and 10 deletions
+7 -2
View File
@@ -12,7 +12,10 @@ class FirstScanner(HistoryScanner):
return generate_help(
"first",
"Read first message (add text to filter like %find)",
args=["image - pull an image instead of a message"],
args=[
"image - pull an image instead of a message",
"spoiler:allow/only - allow spoiler images",
],
)
def __init__(self):
@@ -20,6 +23,8 @@ class FirstScanner(HistoryScanner):
async def get_results(self, intro: str) -> List[str]:
if self.images_only:
return await self.history.to_string_image(type="first")
return await self.history.to_string_image(
type="first", spoiler=self.spoiler
)
else:
return self.history.to_string(type="first")
+8 -1
View File
@@ -8,13 +8,14 @@ import re
from .scanner import Scanner
from data_types import History
from logs import ChannelLogs, MessageLog
from utils import FilterLevel
class HistoryScanner(Scanner, ABC):
def __init__(self, *, help: str):
super().__init__(
has_digit_args=True,
valid_args=["all", "everyone"],
valid_args=["all", "everyone", "spoiler", "spoiler:allow", "spoiler:only"],
help=help,
intro_context="",
all_args=True,
@@ -24,6 +25,12 @@ class HistoryScanner(Scanner, ABC):
self.history = History()
self.all_messages = "all" in args or "everyone" in args
self.images_only = "image" in args
if "spoiler" in args or "spoiler:allow" in args:
self.spoiler = FilterLevel.ALLOW
elif "spoiler:only" in args:
self.spoiler = FilterLevel.ONLY
else:
self.spoiler = FilterLevel.NONE
if not self.images_only:
self.queries = [
(
+5 -2
View File
@@ -12,7 +12,10 @@ class LastScanner(HistoryScanner):
return generate_help(
"last",
"Read last message (add text to filter like %find)",
args=["image - pull an image instead of a message"],
args=[
"image - pull an image instead of a message",
"spoiler:allow/only - allow spoiler images",
],
)
def __init__(self):
@@ -20,6 +23,6 @@ class LastScanner(HistoryScanner):
async def get_results(self, intro: str) -> List[str]:
if self.images_only:
return await self.history.to_string_image(type="last")
return await self.history.to_string_image(type="last", spoiler=self.spoiler)
else:
return self.history.to_string(type="last")
+7 -2
View File
@@ -12,7 +12,10 @@ class RandomScanner(HistoryScanner):
return generate_help(
"rand",
"Read a random message (add text to filter like %find)",
args=["image - pull an image instead of a message"],
args=[
"image - pull an image instead of a message",
"spoiler:allow/only - allow spoiler images",
],
)
def __init__(self):
@@ -20,6 +23,8 @@ class RandomScanner(HistoryScanner):
async def get_results(self, intro: str) -> List[str]:
if self.images_only:
return await self.history.to_string_image(type="random")
return await self.history.to_string_image(
type="random", spoiler=self.spoiler
)
else:
return self.history.to_string(type="random")