diff --git a/control_db/user.py b/control_db/user.py index 05fb564..5a7f8a1 100644 --- a/control_db/user.py +++ b/control_db/user.py @@ -13,6 +13,17 @@ async def telegram_id_exists(self, telegram_id): ).fetchall() return bool(result[0][0]) + async def get_username(self, telegram_id): + result = await ( + await self.cur.execute( + """SELECT username + FROM `user` + WHERE `telegram_id` = ?""", + (telegram_id,), + ) + ).fetchall() + return result[0][0] + async def get_count_users(self): result = await ( await self.cur.execute("SELECT COUNT(`telegram_id`) FROM `user`") diff --git a/handlers/menu.py b/handlers/menu.py index 417d75b..a28b8d5 100644 --- a/handlers/menu.py +++ b/handlers/menu.py @@ -19,7 +19,7 @@ class SendFAQ(StatesGroup): @router.message(F.text == "Інформація 🧾") async def information(message: Message): await message.delete() - await message.answer("Щр вас цікавить ?", reply_markup=about()) + await message.answer("Що вас цікавить ?", reply_markup=about()) async def send_about_information(query: CallbackQuery, text: str) -> None: @@ -122,29 +122,28 @@ async def about_information(query: CallbackQuery): ) tariff = ( - "Тариф\n" - "\n" - "Тариф один - 300 грн\n" - "Термін дії - 30 днів\n" - "Подовжити тариф можна в будь який час\n" + "Тариф 📑\n" + "Ціна тарифу - 300 грн 💸\n" + "Термін дії - 1 місяць 🕐\n" + "Подовжити тариф можна в будь який час 🤝\n" ) about_us = ( - "Про Нас\n" + "Про Нас 👤\n" "\n" - 'Бот-помічник "Опис та фото обʼєкта". створений для агенцій нерухомості.\n' + 'Бот-помічник "Опис та фото обʼєкта". Створений для агенцій нерухомості.\n' "Допомагає автоматизувати роботу та генерую рекламні пости обʼєктів аренди та продажу.\n" ) usage_tips = ( - "Поради Користування. \n" + "Поради Користування ❤️\n" "\n" - "Все просто! Кидаєте боту посилання з ОЛХ ( обовʼязково це посилання повинно бути зі сторінки сайту з продажу чи оренди майна)\n" + "Все просто! Кидаєте боту посилання з ОЛХ ( обовʼязково це посилання повинно бути зі сторінки сайту з продажу чи оренди нерухомості)\n" "Бот у відповідь вам надсилає готовий пост с фото та описом. Ви цей пост вже надсилаєте своєму клієнту!\n" ) contacts = ( - "Контакти\n" + "Контакти 📱\n" "\n" "З приводу пропозицій, скарг або комерційних питань:\n" "Телеграм - @realtor_057\n" @@ -172,9 +171,9 @@ async def premium(message: Message): if not await db.telegram_id_premium_exists(telegram_id): await message.answer( text=( - f"Інформація про вашу підписку 👑\n" - f"Підписка: не активна ❌\n" - f"Купував підписку: 0 раз" + f"Інформація про вашу підписку 👑:\n" + f"Підписка: Не активна ❌\n" + f"Ви ні разу не купували підписку." ), reply_markup=buy_premium(), ) @@ -187,15 +186,15 @@ async def premium(message: Message): if is_premium: text = ( - f"Інформація про вашу підписку 👑\n" - f"Підписка: активна ✅\n" + f"Інформація про вашу підписку 👑:\n" + f"Підписка: Активна ✅\n" f"Купував підписку: {bought_premium} раз\n\n" f"Дія підписки до: {date_purchase}-{expiration_date}" ) elif not is_premium: text = ( - f"Інформація про вашу підписку 👑\n" - f"Підписка: не активна ❌\n" + f"Інформація про вашу підписку 👑:\n" + f"Підписка: Не активна ❌\n" f"Купував підписку: {bought_premium} раз\n\n" f"Закінчилась: {expiration_date}" ) @@ -225,19 +224,13 @@ async def faq(message: Message): await message.answer(text, disable_web_page_preview=True, reply_markup=hide_kb()) -@router.message(F.text == "FAQ 👤") +@router.message(F.text == "Зворт зв`язок 👤") async def information(message: Message, state: FSMContext): await message.delete() - db = await Database.setup() - - if not await db.is_premium_user(message.from_user.id): - await message.answer( - "Щоб написати адміну у вас повинна бути активна підписка 🥹" - ) - return message = await message.answer( - "Напишіть нижче питання, і воно буде відправлене до адміна", reply_markup=back() + "Напишіть нижче питання, і воно буде відправлене до адміна\nАбо напишіть йому особисто @realtor_057", + reply_markup=back(), ) await state.set_state(SendFAQ.send_message) await state.update_data(message=message) diff --git a/handlers/payments.py b/handlers/payments.py index 62f5903..869a29f 100644 --- a/handlers/payments.py +++ b/handlers/payments.py @@ -119,6 +119,7 @@ async def create_payment( "notifyMethod": "bot", "orderReference": order_reference, "orderDate": order_date, + "alternativeAmount": 350, "amount": amount, "currency": currency, "productName": list(product_name), @@ -165,11 +166,11 @@ async def get_payment_info(order_reference: str, merchant_account: str) -> Check @router.callback_query(F.data == "Придбати підписку 💳") async def payment(query: CallbackQuery): db = await Database.setup() - amount = 1 + amount = 300 currency = "UAH" product_name = ("Місячна підписка", "Комісія") product_count = (int(1), int(1)) - product_price = (int(10), int(0)) + product_price = (int(300), int(0)) order_reference = generate_random_string(12) order_date = int(datetime.now().replace(hour=0, minute=0, second=0).timestamp()) @@ -234,7 +235,7 @@ async def check_status_invoice( await bot.send_message( chat_id=-1001902595324, message_thread_id=392, - text=f"Оплата пройшла успішно\nКод оплати {response.reason_code}\nКод підписки {reference}", + text=f"Оплата пройшла успішно @{await db.get_username(telegram_id)} {telegram_id}\nКод оплати {response.reason_code}\nКод підписки {reference}", ) # [N] CHECK NEW OR OLD USER AND SEND NOTIFY @@ -273,7 +274,7 @@ async def check_status_invoice( await bot.send_message( chat_id=-1001902595324, message_thread_id=392, - text=f"Оплата провалилась\nКод оплати {response.reason_code}\nКод підписки {reference}", + text=f"Оплата провалилась @{await db.get_username(telegram_id)} {telegram_id}\nКод оплати {response.reason_code}\nКод підписки {reference}", ) # [N] SEND NOTIFY diff --git a/handlers/task.py b/handlers/task.py index 549b910..e1e7a98 100644 --- a/handlers/task.py +++ b/handlers/task.py @@ -70,6 +70,6 @@ async def create_tasks(): scheduler.add_job( check_all_invoice, "interval", seconds=10, id="check_all_invoice", args=(lock,) ) - # scheduler.add_job( - # check_all_premium, "interval", seconds=15, id="check_all_premium", args=(lock,) - # ) + scheduler.add_job( + check_all_premium, "cron", hour=7, id="check_all_premium", args=(lock,) + ) diff --git a/keyboards/menu.py b/keyboards/menu.py index 593c47b..2b7b6d5 100644 --- a/keyboards/menu.py +++ b/keyboards/menu.py @@ -1,12 +1,16 @@ -from aiogram.types import (InlineKeyboardButton, InlineKeyboardMarkup, - KeyboardButton, ReplyKeyboardMarkup) +from aiogram.types import ( + InlineKeyboardButton, + InlineKeyboardMarkup, + KeyboardButton, + ReplyKeyboardMarkup, +) from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder def menu_kb() -> ReplyKeyboardMarkup: builder = ReplyKeyboardBuilder() - keyboard = ["Інформація 🧾", "Підписка 👑", "Посилання 🔗", "FAQ 👤"] + keyboard = ["Інформація 🧾", "Підписка 👑", "Посилання 🔗", "Зворт зв`язок 👤"] for button in keyboard: builder.add(KeyboardButton(text=button, callback_data=button)) @@ -14,7 +18,7 @@ def menu_kb() -> ReplyKeyboardMarkup: return builder.adjust(2).as_markup(resize_keyboard=True) -def about(without: str = "") -> InlineKeyboardMarkup: +def about() -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() keyboard = [ @@ -27,9 +31,6 @@ def about(without: str = "") -> InlineKeyboardMarkup: "Сховати ❌", ] - # if without != "": - # keyboard.remove(without) - for button in keyboard: builder.add(InlineKeyboardButton(text=button, callback_data=button))