Removed legacy, fixed some bugs, improved spoilers #6
@ -92,7 +92,7 @@
|
|||||||
"sponsorships_expires": "⚠️ **Нагадування**\nНадана платна підписка припинить діяти **за {0} д**. Будь ласка, оновіть дані про неї командою /sponsorship інакше роль буде втрачено!",
|
"sponsorships_expires": "⚠️ **Нагадування**\nНадана платна підписка припинить діяти **за {0} д**. Будь ласка, оновіть дані про неї командою /sponsorship інакше роль буде втрачено!",
|
||||||
"sponsorships_expired": "⚠️ **Нагадування**\nТермін дії вказаної підписки сплив. Для повторного отримання ролі користуйся командою /sponsorship.",
|
"sponsorships_expired": "⚠️ **Нагадування**\nТермін дії вказаної підписки сплив. Для повторного отримання ролі користуйся командою /sponsorship.",
|
||||||
"label_too_long": "Довжина назви ролі не повинна перевищувати 16 символів",
|
"label_too_long": "Довжина назви ролі не повинна перевищувати 16 символів",
|
||||||
"finish_sponsorship": "❌ **Дія неможлива**\nПерш ніж заповнювати анкету, треба завершити заповнення форми спонсора.",
|
"finish_sponsorship": "❌ **Дія неможлива**\nПерш ніж заповнювати анкету, треба завершити заповнення форми спонсора або перервати його командою /cancel.",
|
||||||
"finish_application": "❌ **Дія неможлива**\nПерш ніж заповнювати форму спонсора, треба завершити заповнення анкети.",
|
"finish_application": "❌ **Дія неможлива**\nПерш ніж заповнювати форму спонсора, треба завершити заповнення анкети.",
|
||||||
"nearby_invalid": "ℹ️ **Місце не знайдено**\nЗа наданим запитом не знайдено місце з координатами. Спробуйте ще раз формулючи запит в стилі \"Чернівці\" або \"Київська область\".",
|
"nearby_invalid": "ℹ️ **Місце не знайдено**\nЗа наданим запитом не знайдено місце з координатами. Спробуйте ще раз формулючи запит в стилі \"Чернівці\" або \"Київська область\".",
|
||||||
"nearby_error": "⚠️ **Сталась помилка**\n\nПомилка: `{0}`\n\nTraceback:\n```\n{1}\n```",
|
"nearby_error": "⚠️ **Сталась помилка**\n\nПомилка: `{0}`\n\nTraceback:\n```\n{1}\n```",
|
||||||
@ -102,15 +102,18 @@
|
|||||||
"identify_invalid_syntax": "Неправильний синтаксис!\nТреба: `/identify ID/NAME/USERNAME`",
|
"identify_invalid_syntax": "Неправильний синтаксис!\nТреба: `/identify ID/NAME/USERNAME`",
|
||||||
"identify_not_found": "Не знайдено користувачів за запитом **{0}**",
|
"identify_not_found": "Не знайдено користувачів за запитом **{0}**",
|
||||||
"identify_success": "Користувач `{0}`\n\nІм'я: {1}\nЮзернейм: {2}\nЄ в чаті: {3}\nЄ адміном: {4}\nРоль: {5}\nНаявна анкета: {6}\nНаявне спонсорство: {7}",
|
"identify_success": "Користувач `{0}`\n\nІм'я: {1}\nЮзернейм: {2}\nЄ в чаті: {3}\nЄ адміном: {4}\nРоль: {5}\nНаявна анкета: {6}\nНаявне спонсорство: {7}",
|
||||||
"spoiler_started": "Розпочато створення спойлера. Надішліть щось",
|
"spoiler_started": "Розпочато створення спойлера. Будь ласка, оберіть категорію спойлера за допомогою клавіатури бота.",
|
||||||
"spoiler_unfinished": "У вас ще є незавершений спойлер. Надішліть /cancel щоб зупинити його створення",
|
"spoiler_unfinished": "У вас ще є незавершений спойлер. Надішліть /cancel щоб зупинити його створення",
|
||||||
"spoiler_cancel": "Створення спойлера було припинено",
|
"spoiler_cancel": "Створення спойлера було припинено",
|
||||||
"spoiler_empty": "Спойлер без опису",
|
"spoiler_empty": "Спойлер без опису",
|
||||||
"spoiler_described": "Спойлер: {0}",
|
"spoiler_described": "Спойлер: {0}",
|
||||||
"spoiler_description_enter": "Добре, введіть бажаний опис спойлера",
|
"spoiler_description_enter": "Добре, введіть бажаний опис спойлера",
|
||||||
"spoiler_using_description": "Встановлено опис спойлера: {0}",
|
"spoiler_using_description": "Встановлено опис спойлера: {0}\n\nЗалишилось додати вміст самого спойлера. Бот приймає текстове повідомлення, фото, відео а також гіф зображення (1 шт.)",
|
||||||
"spoiler_send_description": "Майже впорались. Тепер треба надіслати коротенький опис спойлера, щоб люди розуміли що під ним варто очкувати. Надішли мінус (-) щоб пропустити цей крок.",
|
"spoiler_send_description": "Тепер треба надіслати коротенький опис спойлера, щоб люди розуміли що під ним варто очкувати. Надішли мінус (-) щоб пропустити цей крок.",
|
||||||
"spoiler_ready": "Успіх! Спойлер створено. Користуйтесь кнопкою нижче щоб надіслати його.",
|
"spoiler_ready": "Успіх! Спойлер створено. Користуйтесь кнопкою нижче щоб надіслати його.",
|
||||||
|
"spoiler_incorrect_content": "Бот не підтримує такий контент. Будь ласка, надішли текст, фото, відео або анімацію (гіф).",
|
||||||
|
"spoiler_incorrect_category": "Вказана категорія не є дійсною. Будь ласка, користуйся клавіатурою бота (кнопка біля 📎) для вибору категорії.",
|
||||||
|
"spoiler_in_progress": "❌ **Дія неможлива**\nПерш ніж починати нову дію, треба завершити створення спойлера або перервати його командою /cancel.",
|
||||||
"yes": "Так",
|
"yes": "Так",
|
||||||
"no": "Ні",
|
"no": "Ні",
|
||||||
"voice_message": [
|
"voice_message": [
|
||||||
@ -134,6 +137,11 @@
|
|||||||
"question_streamer": "Стрімер:",
|
"question_streamer": "Стрімер:",
|
||||||
"question_expires": "Підписка до:",
|
"question_expires": "Підписка до:",
|
||||||
"question_label": "Хоче роль:"
|
"question_label": "Хоче роль:"
|
||||||
|
},
|
||||||
|
"spoiler_categories": {
|
||||||
|
"nsfw": "NSFW контент",
|
||||||
|
"deanon": "Деанон холо-учасників",
|
||||||
|
"other": "Інше"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"keyboard": {
|
"keyboard": {
|
||||||
@ -158,7 +166,7 @@
|
|||||||
"Ні, повторно заповнити"
|
"Ні, повторно заповнити"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"spoiler_description": [
|
"spoiler_categories": [
|
||||||
[
|
[
|
||||||
"NSFW контент"
|
"NSFW контент"
|
||||||
],
|
],
|
||||||
@ -166,7 +174,7 @@
|
|||||||
"Деанон холо-учасників"
|
"Деанон холо-учасників"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Інше (надішліть свій текст)"
|
"Інше"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -15,7 +15,7 @@ async def cmd_reapply(app: Client, msg: Message):
|
|||||||
holo_user = HoloUser(msg.from_user)
|
holo_user = HoloUser(msg.from_user)
|
||||||
|
|
||||||
# Check if user has approved/rejected tmp application
|
# Check if user has approved/rejected tmp application
|
||||||
if (holo_user.application_state()[0] in ["approved", "rejected"]) or (holo_user.application_state()[0] == "none"):
|
if ((holo_user.application_state()[0] in ["approved", "rejected"]) or (holo_user.application_state()[0] == "none")) and holo_user.spoiler_state() is False:
|
||||||
|
|
||||||
# Check if user's tmp application is already completed or even sent
|
# Check if user's tmp application is already completed or even sent
|
||||||
if ((holo_user.application_state()[1] is True) and (not col_tmp.find_one({"user": holo_user.id, "type": "application"})["sent"])) or (holo_user.application_state()[0] == "none"):
|
if ((holo_user.application_state()[1] is True) and (not col_tmp.find_one({"user": holo_user.id, "type": "application"})["sent"])) or (holo_user.application_state()[0] == "none"):
|
||||||
@ -51,6 +51,10 @@ async def cmd_reapply(app: Client, msg: Message):
|
|||||||
]
|
]
|
||||||
]))
|
]))
|
||||||
|
|
||||||
|
elif holo_user.spoiler_state() is True:
|
||||||
|
|
||||||
|
await msg.reply_text(locale("spoiler_in_progress", "message", locale=holo_user))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
if (holo_user.application_state()[0] == "fill") and (col_tmp.find_one({"user": holo_user.id, "type": "application"})["sent"] is True):
|
if (holo_user.application_state()[0] == "fill") and (col_tmp.find_one({"user": holo_user.id, "type": "application"})["sent"] is True):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from app import app
|
from app import app
|
||||||
from pyrogram import filters
|
from pyrogram import filters
|
||||||
from pyrogram.types import Message, ForceReply
|
from pyrogram.types import Message, ReplyKeyboardMarkup
|
||||||
from pyrogram.client import Client
|
from pyrogram.client import Client
|
||||||
from classes.holo_user import HoloUser, UserInvalidError, UserNotFoundError
|
from classes.holo_user import HoloUser, UserInvalidError, UserNotFoundError
|
||||||
from modules.logging import logWrite
|
from modules.logging import logWrite
|
||||||
@ -25,15 +25,17 @@ async def cmd_spoiler(app: Client, msg: Message):
|
|||||||
{
|
{
|
||||||
"user": msg.from_user.id,
|
"user": msg.from_user.id,
|
||||||
"completed": False,
|
"completed": False,
|
||||||
|
"category": None,
|
||||||
"description": None,
|
"description": None,
|
||||||
"photo": None,
|
"photo": None,
|
||||||
"video": None,
|
"video": None,
|
||||||
"animation": None,
|
"animation": None,
|
||||||
|
"caption": None,
|
||||||
"text": None
|
"text": None
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
await msg.reply_text(locale("spoiler_started", "message", locale=msg.from_user), reply_markup=ForceReply(placeholder=locale("spoiler_content", "force_reply", locale=msg.from_user)))
|
await msg.reply_text(locale("spoiler_started", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_categories", "keyboard"), resize_keyboard=True, one_time_keyboard=True))
|
||||||
logWrite(f"User {msg.from_user.id} started creating new spoiler")
|
logWrite(f"User {msg.from_user.id} started creating new spoiler")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -10,9 +10,13 @@ from modules.database import col_applications
|
|||||||
# Sponsorship command ==========================================================================================================
|
# Sponsorship command ==========================================================================================================
|
||||||
@app.on_message(custom_filters.enabled_sponsorships & ~filters.scheduled & filters.command(["sponsorship"], prefixes=["/"]) & (custom_filters.allowed | custom_filters.admin))
|
@app.on_message(custom_filters.enabled_sponsorships & ~filters.scheduled & filters.command(["sponsorship"], prefixes=["/"]) & (custom_filters.allowed | custom_filters.admin))
|
||||||
async def cmd_sponsorship(app: Client, msg: Message):
|
async def cmd_sponsorship(app: Client, msg: Message):
|
||||||
if HoloUser(msg.from_user).application_state()[0] == "fill":
|
holo_user = HoloUser(msg.from_user)
|
||||||
|
if holo_user.application_state()[0] == "fill":
|
||||||
await msg.reply_text(locale("finish_application", "message", locale=msg.from_user), quote=should_quote(msg))
|
await msg.reply_text(locale("finish_application", "message", locale=msg.from_user), quote=should_quote(msg))
|
||||||
return
|
return
|
||||||
|
if holo_user.spoiler_state() is True:
|
||||||
|
await msg.reply_text(locale("spoiler_in_progress", "message", locale=holo_user))
|
||||||
|
return
|
||||||
await msg.reply_text(locale("sponsorship_apply", "message", locale=msg.from_user), reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text=str(locale("sponsor_apply", "button", locale=msg.from_user)), callback_data=f"sponsor_apply_{msg.from_user.id}")]]), quote=should_quote(msg))
|
await msg.reply_text(locale("sponsorship_apply", "message", locale=msg.from_user), reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text=str(locale("sponsor_apply", "button", locale=msg.from_user)), callback_data=f"sponsor_apply_{msg.from_user.id}")]]), quote=should_quote(msg))
|
||||||
# else:
|
# else:
|
||||||
# await msg.reply_text(locale("sponsorship_application_empty", "message"))
|
# await msg.reply_text(locale("sponsorship_application_empty", "message"))
|
||||||
|
@ -33,11 +33,11 @@ async def cmd_start(app: Client, msg: Message):
|
|||||||
try:
|
try:
|
||||||
spoiler = col_spoilers.find_one( {"_id": ObjectId(msg.command[1])} )
|
spoiler = col_spoilers.find_one( {"_id": ObjectId(msg.command[1])} )
|
||||||
if spoiler["photo"] is not None:
|
if spoiler["photo"] is not None:
|
||||||
await msg.reply_photo(spoiler["photo"])
|
await msg.reply_photo(spoiler["photo"], caption=spoiler["caption"])
|
||||||
if spoiler["video"] is not None:
|
if spoiler["video"] is not None:
|
||||||
await msg.reply_video(spoiler["video"])
|
await msg.reply_video(spoiler["video"], caption=spoiler["caption"])
|
||||||
if spoiler["animation"] is not None:
|
if spoiler["animation"] is not None:
|
||||||
await msg.reply_animation(spoiler["animation"])
|
await msg.reply_animation(spoiler["animation"], caption=spoiler["caption"])
|
||||||
if spoiler["text"] is not None:
|
if spoiler["text"] is not None:
|
||||||
await msg.reply_text(spoiler["text"])
|
await msg.reply_text(spoiler["text"])
|
||||||
except InvalidId:
|
except InvalidId:
|
||||||
|
@ -63,40 +63,68 @@ async def any_stage(app: Client, msg: Message):
|
|||||||
if spoiler is None:
|
if spoiler is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
if msg.photo is not None:
|
if spoiler["category"] is None:
|
||||||
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"photo": msg.photo.file_id}} )
|
|
||||||
await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
found = False
|
||||||
logWrite(f"Adding photo with id {msg.photo.file_id} to {msg.from_user.id}'s spoiler")
|
|
||||||
|
# Find category in all locales
|
||||||
|
for lc in all_locales("spoiler_categories", "message"):
|
||||||
|
for key in lc:
|
||||||
|
if lc[key] == msg.text:
|
||||||
|
found = True
|
||||||
|
category = key
|
||||||
|
|
||||||
|
if found is False:
|
||||||
|
await msg.reply_text(locale("spoiler_incorrect_category", "message", locale=msg.from_user))
|
||||||
|
return
|
||||||
|
|
||||||
|
col_spoilers.find_one_and_update( {"_id": spoiler["_id"]}, {"$set": {"category": category}} )
|
||||||
|
await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ForceReply(placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if spoiler["description"] is None and (spoiler["photo"] is None and spoiler["video"] is None and spoiler["animation"] is None and spoiler["text"] is None):
|
||||||
|
|
||||||
|
# for lc in all_locales("spoiler_description", "keyboard"):
|
||||||
|
# if msg.text == lc[-1][0]:
|
||||||
|
# await msg.reply_text(locale("spoiler_description_enter", "message", locale=msg.from_user), reply_markup=ForceReply(placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
||||||
|
# return
|
||||||
|
|
||||||
|
if msg.text != "-":
|
||||||
|
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"description": msg.text}} )
|
||||||
|
else:
|
||||||
|
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"description": ""}} )
|
||||||
|
|
||||||
|
logWrite(f"Adding description '{msg.text}' to {msg.from_user.id}'s spoiler")
|
||||||
|
await msg.reply_text(locale("spoiler_using_description", "message", locale=msg.from_user).format(msg.text), reply_markup=ForceReply(placeholder=locale("spoiler_content", "force_reply", locale=msg.from_user)))
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
ready = False
|
||||||
|
|
||||||
|
if msg.photo is not None:
|
||||||
|
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"photo": msg.photo.file_id, "caption": msg.caption, "completed": True}} )
|
||||||
|
logWrite(f"Adding photo with id {msg.photo.file_id} to {msg.from_user.id}'s spoiler")
|
||||||
|
ready = True
|
||||||
|
|
||||||
if msg.video is not None:
|
if msg.video is not None:
|
||||||
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"video": msg.video.file_id}} )
|
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"video": msg.video.file_id, "caption": msg.caption, "completed": True}} )
|
||||||
await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
|
||||||
logWrite(f"Adding video with id {msg.video.file_id} to {msg.from_user.id}'s spoiler")
|
logWrite(f"Adding video with id {msg.video.file_id} to {msg.from_user.id}'s spoiler")
|
||||||
return
|
ready = True
|
||||||
|
|
||||||
if msg.animation is not None:
|
if msg.animation is not None:
|
||||||
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"animation": msg.animation.file_id}} )
|
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"animation": msg.animation.file_id, "caption": msg.caption, "completed": True}} )
|
||||||
await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
|
||||||
logWrite(f"Adding animation with id {msg.animation.file_id} to {msg.from_user.id}'s spoiler")
|
logWrite(f"Adding animation with id {msg.animation.file_id} to {msg.from_user.id}'s spoiler")
|
||||||
return
|
ready = True
|
||||||
|
|
||||||
if spoiler["photo"] is None and spoiler["video"] is None and spoiler["animation"] is None and spoiler["text"] is None:
|
if spoiler["photo"] is None and spoiler["video"] is None and spoiler["animation"] is None and spoiler["text"] is None:
|
||||||
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"text": msg.text}} )
|
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"text": msg.text, "completed": True}} )
|
||||||
await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
|
||||||
logWrite(f"Adding text '{msg.text}' to {msg.from_user.id}'s spoiler")
|
logWrite(f"Adding text '{msg.text}' to {msg.from_user.id}'s spoiler")
|
||||||
|
ready = True
|
||||||
|
|
||||||
|
if ready is True:
|
||||||
|
await msg.reply_text(locale("spoiler_ready", "message", locale=msg.from_user), reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(locale("spoiler_send", "button", locale=msg.from_user), switch_inline_query=f"spoiler:{spoiler['_id'].__str__()}")]]))
|
||||||
else:
|
else:
|
||||||
for lc in all_locales("spoiler_description", "keyboard"):
|
await msg.reply_text(locale("spoiler_incorrect_content", "message", locale=msg.from_user))
|
||||||
if msg.text == lc[-1][0]:
|
|
||||||
await msg.reply_text(locale("spoiler_description_enter", "message", locale=msg.from_user), reply_markup=ForceReply(placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user)))
|
|
||||||
return
|
|
||||||
if msg.text != "-":
|
|
||||||
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"description": msg.text, "completed": True}} )
|
|
||||||
else:
|
|
||||||
col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"description": None, "completed": True}} )
|
|
||||||
logWrite(f"Adding description '{msg.text}' to {msg.from_user.id}'s spoiler")
|
|
||||||
await msg.reply_text(locale("spoiler_using_description", "message", locale=msg.from_user).format(msg.text), reply_markup=ReplyKeyboardRemove())
|
|
||||||
await msg.reply_text(locale("spoiler_ready", "message", locale=msg.from_user), quote=False, reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(locale("spoiler_send", "button", locale=msg.from_user), switch_inline_query=f"spoiler:{spoiler['_id'].__str__()}")]]))
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(~ filters.scheduled & filters.group)
|
@app.on_message(~ filters.scheduled & filters.group)
|
||||||
|
@ -28,7 +28,7 @@ async def inline_answer(client: Client, inline_query: InlineQuery):
|
|||||||
|
|
||||||
if spoil is not None:
|
if spoil is not None:
|
||||||
|
|
||||||
desc = locale("spoiler_empty", "message", locale=inline_query.from_user) if spoil["description"] is None else locale("spoiler_described", "message", locale=inline_query.from_user).format(spoil["description"])
|
desc = locale("spoiler_empty", "message", locale=inline_query.from_user) if spoil["description"] == "" else locale("spoiler_described", "message", locale=inline_query.from_user).format(spoil["description"])
|
||||||
|
|
||||||
results = [
|
results = [
|
||||||
InlineQueryResultArticle(
|
InlineQueryResultArticle(
|
||||||
|
@ -3,10 +3,12 @@
|
|||||||
"required": [
|
"required": [
|
||||||
"user",
|
"user",
|
||||||
"completed",
|
"completed",
|
||||||
|
"category",
|
||||||
"description",
|
"description",
|
||||||
"photo",
|
"photo",
|
||||||
"video",
|
"video",
|
||||||
"animation",
|
"animation",
|
||||||
|
"caption",
|
||||||
"text"
|
"text"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
@ -18,6 +20,11 @@
|
|||||||
"bsonType": "bool",
|
"bsonType": "bool",
|
||||||
"description": "Whether spoiler is a completed one"
|
"description": "Whether spoiler is a completed one"
|
||||||
},
|
},
|
||||||
|
"category": {
|
||||||
|
"bsonType": ["string", "null"],
|
||||||
|
"enum": ["nsfw", "deanon", "other"],
|
||||||
|
"description": "Spoiler's category"
|
||||||
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"bsonType": ["string", "null"],
|
"bsonType": ["string", "null"],
|
||||||
"description": "Spoiler's description"
|
"description": "Spoiler's description"
|
||||||
@ -34,6 +41,10 @@
|
|||||||
"bsonType": ["string", "null"],
|
"bsonType": ["string", "null"],
|
||||||
"description": "Spoilered animation/GIF"
|
"description": "Spoilered animation/GIF"
|
||||||
},
|
},
|
||||||
|
"caption": {
|
||||||
|
"bsonType": ["string", "null"],
|
||||||
|
"description": "Spoilered caption for media"
|
||||||
|
},
|
||||||
"text": {
|
"text": {
|
||||||
"bsonType": ["string", "null"],
|
"bsonType": ["string", "null"],
|
||||||
"description": "Spoilered text"
|
"description": "Spoilered text"
|
||||||
|
Reference in New Issue
Block a user