diff --git a/modules/event.py b/modules/event.py index 46375e3..f26e686 100644 --- a/modules/event.py +++ b/modules/event.py @@ -9,7 +9,8 @@ from modules.database import db from pyrogram import filters from pyrogram.client import Client -from pyrogram.types import Message +from pyrogram.types import Message, User +from pyrogram.enums import ParseMode from app import app from modules.utils import configGet @@ -22,6 +23,31 @@ if not "event" in collections: col_event = db.get_collection("event") +async def stage_passer( + previous: int, current: int, user: User, requires_previous: bool = True +) -> bool: + if requires_previous: + if col_event.find_one({"user": user.id, "stage": previous}) is None: + return False + + if col_event.find_one({"user": user.id, "stage": current}) is None: + col_event.insert_one( + {"user": user.id, "stage": current, "date": datetime.now()} + ) + if current == -1: + await app.send_message( + configGet("admin", "groups"), + f"Користувач **{user.first_name}** (`{user.id}`) пройшов етап BONUS", + ) + else: + await app.send_message( + configGet("admin", "groups"), + f"Користувач **{user.first_name}** (`{user.id}`) пройшов етап №{current}", + ) + + return True + + # Stage 1 @app.on_message( ~filters.scheduled @@ -29,14 +55,8 @@ col_event = db.get_collection("event") & filters.private ) async def cmd_event_1(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 1}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 1, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №1", - ) + if not await stage_passer(0, 1, msg.from_user, requires_previous=False): + return await msg.reply_text( """Ви відразу поїхали на місце злочину, найкрупніше відділення мережі ресторанів фаст-фуду "KFP". Як Кіара й розповіла, ніяких слідів пограбування не було. Допитавши кількох працівників, ви не дізналися нічого корисного. Камери спостереження теж не дали ніякої корисної інформації. @@ -57,18 +77,9 @@ async def cmd_event_1(app: Client, msg: Message): ~filters.scheduled & filters.command(["tonjok"], prefixes=["/"]) & filters.private ) async def cmd_event_2(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 1}) is None: + if not await stage_passer(1, 2, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 2}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 2, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №2", - ) - await msg.reply_text( """Ви дуже здивувалися, коли побачили, що таємна кімната виявилася... Бібліотекою. Просто для того, щоб впевнитися, що тут не відбувається нічого кримінального, ви відкрили першу ж книгу, що попалася на очі. @@ -89,18 +100,9 @@ async def cmd_event_2(app: Client, msg: Message): & filters.private ) async def cmd_event_3(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 2}) is None: + if not await stage_passer(2, 3, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 3}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 3, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №3", - ) - await msg.reply_text( """Прийшовши до будинку Рейне, ви не змогли потрапити всередину, бо ваші дзвінки були проігноровані. Роздивившись ворота поуважніше, ви побачили збоку невеличку табличку із написом "ВСЬОГО ЗА ТРИ ПРОСТИХ КЛІКИ ВИ ТЕЖ МОЖЕТЕ ДОЄДНАТИСЯ, MUDAH SEKALI" і кодовий замок із шести літер.""" ) @@ -111,24 +113,16 @@ async def cmd_event_3(app: Client, msg: Message): ~filters.scheduled & filters.command(["joinda"], prefixes=["/"]) & filters.private ) async def cmd_event_4(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 3}) is None: + if not await stage_passer(3, 4, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 4}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 4, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №4", - ) - await msg.reply_text( """Пройшовши через ворота, ви постукали у двері і сказали таємний пароль від Субару. Двері відчинилися, і ви почули голос Рейне. "Заходь у останні двері ліворуч". На дверях чомусь була намальована велика червона цифра 5 та поруч був дуже дивний механізм. Ви не встигли роздивитися цей "замок", як двері почали повільно відчинятися. Зайшовши всередину ви опинилися у Кавуновій Кімнаті™, посеред якої сиділа Рейне. Ви почали задавати питання про яйця, але Кавунова Кімната™ не виходила з вашої голови, наче ви десь її бачили... І тут ви згадали! Така сама кімната була в тому фанфіку! На жаль, ви мали необережність сказати це вголос, і Рейне образилася на вас через те, що ви зайшли в її бібліотеку без дозволу. Із криками "ТА НІХТО НЕ КРАВ МОЇ ЯЙЦЯ!" вона випинує вас надвір, і ви вирішуєте іти до наступної Холоторі. Ви вирішили завітати до Мумей. Діставшись її дому, ви довго стояли перед входом та думали, чи варто взагалі заходити. Її дім - це гігантська темна печера, що веде в невідоме. Але ваш обов’язок кличе, тому, дістав свій ліхтарик, ви ризикнули зайти. Блукая тунелями печери, ви постійно натикалися на розвилки. Перші два перехрестя ви пройшли прямо, не завертаючи нікуди. Але на третьому вас чекали підозрілі червоні плями на стінах, і ви вирішили, що краще повернутися та обрати інший маршрут. Ви повертали то вліво, то вправо, то вліво, то вправо, і врешті-решт опинилися в тупику. На стіні висіла табличка з двома буквами: “B” та “A”, а під нею лежали полотно, перо та баночка з тією самою червоною рідиною. На самому ж полотні було 6 пустих клітинок. Чи варто вам спробувати щось написати чи просто розвернутися та піти іншою дорогою? -__(Введіть команду /next, якщо хочете продовжити розслідування, або введіть зашифровану команду /******, щоб побачити бонусну сцену, яка не впливає на геймплей.)__""" +(Введіть команду /next, якщо хочете продовжити розслідування, або введіть зашифровану команду /******, щоб побачити бонусну сцену, яка не впливає на геймплей.)""", + parse_mode=ParseMode.HTML, ) @@ -137,18 +131,9 @@ __(Введіть команду /next, якщо хочете продовжит ~filters.scheduled & filters.command(["next"], prefixes=["/"]) & filters.private ) async def cmd_event_5(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 4}) is None: + if not await stage_passer(4, 5, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 5}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 5, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №5", - ) - await msg.reply_text( """Ви повернулися на самий початок шляху і пішли в той напрямок, який ще не дослідили. На диво, ця дорога вела прямо. Коли ви йшли, вам по дорозі траплялися дивні камінчики, які ви вирішили збирати. На кінці шляху вас чекали великі двері, наче в бункері. Коло них був девайс для вводу коду з 3 цифр. Ви подивилися ще раз на камінчики, які зібрали та на символи на них: @@ -171,18 +156,9 @@ async def cmd_event_5(app: Client, msg: Message): ~filters.scheduled & filters.command(["238"], prefixes=["/"]) & filters.private ) async def cmd_event_6(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 5}) is None: + if not await stage_passer(5, 6, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 6}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 6, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №6", - ) - await msg.reply_text( """Всередині ви побачили гігантську ферму, явно штучно зроблену, та Кроніі з Фауну, які поливали саженці. Вони здивувалися, побачивши вас, але ви швидко показали своє поліцейське посвідчення та пояснили ситуацію. Дівчата сказали, що ніякі яйця в Мумей ніхто не крав і що самі вони нічого не чули. Перед тим, як ви пішли далі, вони з ігривою посмішкою задали вам питання, сказав, що дадуть вам підказку, якщо ви правильно дасте відповідь. @@ -197,18 +173,9 @@ async def cmd_event_6(app: Client, msg: Message): ~filters.scheduled & filters.command(["berries"], prefixes=["/"]) & filters.private ) async def cmd_event_7(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 6}) is None: + if not await stage_passer(6, 7, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 7}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 7, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №7", - ) - await msg.reply_text( """Кроніі та Фауна, як обіцяли, дали вам підказку. Коли ви сказали, що ви опитуєте всіх Голоторі, вони зрозуміли, що далі ви підете до Луї. Але базу Голоксу просто так не знайти, тому дівчата підказали вам локацію. Ви прийшли на місце і опинилися перед звичайним собі житловим будинком у спальному районі. Ви знайшли вхід до підвалу та ввели код від двері (1111), який вам повідомили дівчата з ГолоРади. “Дивно, якось занадто легко як для секретної бази”, - подумали ви та зайшли всередину. Підвал виглядав абсолютно звичайно, єдине, що виділялося, - це залізні двері без ручки. Коло них на вас чекала чергова кодова панель. На цей раз із буквенною клавіатурою. Ви подивилися на символи на двері, “常夜”, та ввели правильний пароль.""" ) @@ -219,18 +186,9 @@ async def cmd_event_7(app: Client, msg: Message): ~filters.scheduled & filters.command(["repaint"], prefixes=["/"]) & filters.private ) async def cmd_event_8(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 7}) is None: + if not await stage_passer(7, 8, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 8}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 8, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №8", - ) - await msg.reply_text( """Тільки-но двері відчинилися, ви побачили перед собою Луї у формі Голоксу та в шикарних окулярах, що нагадували вам окуляри Каміни із Ґуррен Лаґанну, а на плечі в неї сидів її секретар, Ґанмо. Її насторожило, що робітник поліції увірвався на секретну базу Голоксу. Ви поспішили її заспокоїти, та сказали що ви розслідуєте зникнення яєць у Холоторі. Луї відповіла, що її яйця в повному порядку і ніхто їх не крав, а от просто так відпустити вас вона тепер не може, бо ви знаєте, де знаходиться секретний штаб. Після цих слів вона простягнула якусь склянку із рідиною, що виглядала як препарати, які носить із собою Койорі. Після того, як випили вміст тієї склянки, ви знепритомніли, а коли прийшли до тями, то сиділи поруч із поліцейським відділенням. У вас зникли спогади про те, як ви йшли до бази Голоксу, але ви чітко запам'ятали, що яйця у Луї ніхто не крав. Озирнувшись по сторонам, ви побачили, що вас кличе до себе Субару. Зайшовши до неї в кабінет, ви дізналися, що поки ви бігали в пошуках Холоторі, у відділення хтось доставив таємничу коробку із кодовим замком та записку, причеплену до неї. @@ -254,18 +212,9 @@ Ohdyhv wkhvh rq wkh jurxqg__ & filters.private ) async def cmd_event_9(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 8}) is None: + if not await stage_passer(8, 9, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 9}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 9, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №9", - ) - await msg.reply_text( """Усередині коробки була рація. Субару негайно вихопила її та натиснула на кнопку зв’язку. @@ -277,7 +226,8 @@ async def cmd_event_9(app: Client, msg: Message): - Моя люба Субару, ти так сильно старалася, що я не можу відмовити тобі! Приїжджай, забирай їх назад. Якщо знайдеш, звісно! AH↓HA↑HA↓HA↑HA↓ -На цьому зв’язок обірвався. Субару почала крутити рацію, шукаючи, чи є щось, що з нею не так. Ви запропонували відкрити відділення для батарейок, і дійсно, там були два папірця. Один із них - це було міні-фото Каели, на якому маркером було написано: “******** doko?” На другому було написано рваним почерком: “07 Jan 22, Mute City, never forget”. Окрім того, ви помітили, що в коробці лежав маленький шматочок якогось білого мінералу. Зібрав до купи всі підказки, ви повідомили шефу, куди вам треба їхати.""" +На цьому зв’язок обірвався. Субару почала крутити рацію, шукаючи, чи є щось, що з нею не так. Ви запропонували відкрити відділення для батарейок, і дійсно, там були два папірця. Один із них - це було міні-фото Каели, на якому маркером було написано: “******** doko?” На другому було написано рваним почерком: “07 Jan 22, Mute City, never forget”. Окрім того, ви помітили, що в коробці лежав маленький шматочок якогось білого мінералу. Зібрав до купи всі підказки, ви повідомили шефу, куди вам треба їхати.""", + parse_mode=ParseMode.DISABLED, ) @@ -286,18 +236,9 @@ async def cmd_event_9(app: Client, msg: Message): ~filters.scheduled & filters.command(["atlantis"], prefixes=["/"]) & filters.private ) async def cmd_event_10(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 9}) is None: + if not await stage_passer(9, 10, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 10}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 10, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №10", - ) - await msg.reply_text( """Ви разом із Субару під’їхали до руїн Атлантиди. Хоча, чи можна це назвати руїнами, коли Ґура просто не добудувала? В будь-якому випадку, на найвищому п’єдесталі стояв кошик, в якому лежали пасхальні яйця Субару, цілі та непошкоджені! Ваша шеф радісно підбігла до нього, але швидко засмутилася, коли побачила серед яєць планшет. Вона увімкнула його - і на заставці екрану було лого Усада Кенсецу. Планшет був повністю пустим, єдиним файлом було відео без назви. Субару увімкнула його - і на екрані з’явився знайомий кролячий силует. @@ -309,7 +250,7 @@ async def cmd_event_10(app: Client, msg: Message): Субару стиснула кулаки та почала кричати в екран, забувши про те, що це запис, а не прямий ефір. Нарешті, Пекора закінчила сміятися і продовжила: -- Моя люба Субару, не плач. Я благородний крадій і дам тобі шанс побути сьогодні героєм та врятувати святковий парад! Якщо хочеш знайти мене та відібрати в мене паску, то рекомендую почати з того, щоб знайти брехуна! Але ти можеш __24__ рази поговорити з усіма мешканцями __Голо__-сіті - тобі все одно не вистачить кмітливості! Адіос! +- Моя люба Субару, не плач. Я благородний крадій і дам тобі шанс побути сьогодні героєм та врятувати святковий парад! Якщо хочеш знайти мене та відібрати в мене паску, то рекомендую почати з того, щоб знайти брехуна! Але ти можеш __24__ рази __поговорити__ з усіма мешканцями __Голо__-сіті - тобі все одно не вистачить кмітливості! Адіос! На цьому відео закінчилося. Ви заспокоїли Субару та звернули її увагу на те, що деякі слова Пекори були сказані іншою інтонацією. Подумав і згадав події сьогоднішнього дня, ви зрозуміли, до кого треба заїхати в першу чергу. @@ -322,20 +263,11 @@ __(У команду треба вписати лише ім’я дівчинк ~filters.scheduled & filters.command(["kiara"], prefixes=["/"]) & filters.private ) async def cmd_event_11(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 10}) is None: + if not await stage_passer(10, 11, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 11}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 11, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №11", - ) - await msg.reply_text( - """Прийшовши до Кіари, ви почали вимагати від неї пояснень. Вона зізналася, що просто не могла відмовити Пекорі, але вона дасть нам наступну підказку. Після цього Кіара почала нишпорити у шафі і через деякий час дістала звідти скриньку із дивними символами. "Цю коробку мені подарувала Аме після найпершого походу в новий світ Амеверсу. Сюди я й поклала підказки, що мені передала Пекора. Якщо зможеш відкрити - вони твої". На шкатулці були зображені [такі символи](https://docs.google.com/document/d/1w2ARMWpUIkNpmSNWFJVGobIMVh2scgSy2hgyHssGLtA/edit?usp=sharing), під якими був кодовий замок із 8 цифр.""", + """Прийшовши до Кіари, ви почали вимагати від неї пояснень. Вона зізналася, що просто не могла відмовити Пекорі, але вона дасть нам наступну підказку. Після цього Кіара почала нишпорити у шафі і через деякий час дістала звідти скриньку із дивними символами. "Цю коробку мені подарувала __Аме__ після __найпершого походу__ в новий світ Амеверсу. Сюди я й поклала підказки, що мені передала Пекора. Якщо зможеш відкрити - вони твої". На шкатулці були зображені [такі символи](https://docs.google.com/document/d/1w2ARMWpUIkNpmSNWFJVGobIMVh2scgSy2hgyHssGLtA/edit?usp=sharing), під якими був кодовий замок із 8 цифр.""", disable_web_page_preview=True, ) @@ -345,18 +277,9 @@ async def cmd_event_11(app: Client, msg: Message): ~filters.scheduled & filters.command(["11022021"], prefixes=["/"]) & filters.private ) async def cmd_event_12(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 11}) is None: + if not await stage_passer(11, 12, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 12}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 12, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №12", - ) - await msg.reply_text( """У скриньці був папірець з географічними координатами. Субару повернулася до відділення, бо їй вже надзвонював на мобільний особисто Яґо, тому далі ви були самі по собі. Ви приїхали на місце і побачили самотній дуб, що ріс посеред парку. У дуплі дуба на вас чекала нова скринька. На її кришці було написано почерком Пекори наступне: @@ -382,24 +305,16 @@ __6 листопада ~filters.scheduled & filters.command(["24"], prefixes=["/"]) & filters.private ) async def cmd_event_13(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 12}) is None: + if not await stage_passer(12, 13, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 13}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 13, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №13", - ) - await msg.reply_text( """Відкривши скриньку, ви побачили всередині... Карі з бараниною?.. Спочатку ви нічого не зрозуміли, але незабаром відчули на собі (чи все ж таки на карі?) голодний погляд Ботан, яка все ще знаходилася поруч. Ви вирішили віддати їй цю смачну страву, за що левиця, задоволено посміхаючись, видала вам рацію та маленьку коробочку у формі ССРБ із кодовим замком на 3 цифри. Рація постійно видавала звуки, схожі на якийсь код, а на коробці було викарбувано "A—>Z, Z—>A". Виписавши сигнали рації морзянкою, ви отримали таке повідомлення: --.. --. --. ... ...- .... --. --.. .. --. .-.. ..- ... ...- .. --.- .-.. ..-. .. -- ...- -... .... --. --.. .. .. -... -- .-. - ... --. .-.. . ...- .. .--. -... .-. . .... .-.. -. --.. -- -... .-- --.. -... .... ... --.. . ...- -.- --.. .... .... ...- .-- --. ...- --- --- -. ...- --. ... ...- -. .-. -- ..-. --. ...- .-. --. ... --.. -.- -.- ...- -- ...- .-- -Швиденько розгадавши цю загадку, ви ввели правильний код.""" +Швиденько розгадавши цю загадку, ви ввели правильний код.""", + parse_mode=ParseMode.DISABLED, ) @@ -408,18 +323,9 @@ async def cmd_event_13(app: Client, msg: Message): ~filters.scheduled & filters.command(["003"], prefixes=["/"]) & filters.private ) async def cmd_event_14(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 13}) is None: + if not await stage_passer(13, 14, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": 14}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": 14, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №14", - ) - await msg.reply_text( """Чергові координати привели вас до закинутого автокінотеатру. Ви увійшли на територію та побачили сцену, на якій я показували фільми. Проектор виводив на екран [дивну таблицю](https://docs.google.com/document/d/1_Mf9w52vDG0sQZ-xKn1pg4tdsLHwiq97O-nHxYELUkI/edit?usp=sharing): @@ -436,23 +342,27 @@ async def cmd_event_14(app: Client, msg: Message): ) +# Stage 15 +@app.on_message( + ~filters.scheduled + & filters.command(["1D2C3E4H5B6F7G8A"], prefixes=["/"]) + & filters.private +) +async def cmd_event_15(app: Client, msg: Message): + if not await stage_passer(14, 15, msg.from_user): + return + + await msg.reply_text("""PLACEHOLDER""") + + # Stage BONUS @app.on_message( ~filters.scheduled & filters.command(["konami"], prefixes=["/"]) & filters.private ) async def cmd_event_bonus(app: Client, msg: Message): - if col_event.find_one({"user": msg.from_user.id, "stage": 4}) is None: + if not await stage_passer(4, -1, msg.from_user): return - if col_event.find_one({"user": msg.from_user.id, "stage": -1}) is None: - col_event.insert_one( - {"user": msg.from_user.id, "stage": -1, "date": datetime.now()} - ) - await app.send_message( - configGet("admin", "groups"), - f"Користувач **{msg.from_user.first_name}** (`{msg.from_user.id}`) пройшов етап №-1 (BONUS)", - ) - await msg.reply_photo( path.join("assets", "event", "stage_bonus.jpg"), caption="""Раптом, стіна почала рухатися, відкриваючи вам прохід. Ви повільно зайшли всередину і побачили якусь дівчину із кролячими вухами. Помітивши вас, вона повернулась і, посміхаючись, промовила: