Exemplo n.º 1
0
async def process_successful_payment(message: types.Message,
                                     state: FSMContext):
    user = DataBaseFunc.get_user(message.from_user.id)

    data = await state.get_data()
    course = DataBaseFunc.get_course(user.course_id)
    DataBaseFunc.add_course_in_user(user, course)
    user.subscribe_end = False
    DataBaseFunc.commit()

    for channel in course.channels:
        try:
            await bot.unban_chat_member(chat_id=channel.channels.id,
                                        user_id=user.id)
        except:
            continue

    mess = await bot.send_message(
        message.chat.id,
        str(get_text(user, 'subscribe_menu_good_pay')).format(
            amount=course.cost,
            currency=message.successful_payment.currency,
            coursename=course.name))
    mess2 = await bot.send_message(message.chat.id,
                                   get_text(user, 'start'),
                                   reply_markup=await
                                   UserGeneratorKeyboard.start_button(user))
    await DataBaseFunc.delete_messages(user)
    ms = Message(user_id=user.id, message_id=mess.message_id)
    ms2 = Message(user_id=user.id, message_id=mess2.message_id)
    DataBaseFunc.add(ms)
    DataBaseFunc.add(ms2)
    await UserStateMainMenu.main_menu.set()
Exemplo n.º 2
0
async def subscribe_continue_pay(callback: types.CallbackQuery,
                                 state: FSMContext):
    """Продлить подписку после её окончания"""
    await callback.answer()
    user = DataBaseFunc.get_user(callback.from_user.id)

    course = DataBaseFunc.get_course(user.course_id)
    timestamp = get_timestamp(user)

    PRICE = types.LabeledPrice(label=course.name,
                               amount=int(f"{course.cost}00"))

    await state.update_data(last_course_id=user.course_id)

    mess = await bot.send_invoice(
        callback.message.chat.id,
        title=course.name,
        description=course.description,
        provider_token=TOKEN_SHOP_YANDEX,
        currency="rub",
        is_flexible=False,
        prices=[PRICE],
        start_parameter=f"course_id_{course.id}",
        payload=timestamp,
        # reply_markup=UserGeneratorKeyboard.course_back_in_list(user)
        # start_parameter = f"lol-lel-cheburek",
        # payload = "test-payload-check"
    )
    await DataBaseFunc.delete_messages(user)
    ms = Message(user_id=user.id, message_id=mess.message_id)
    DataBaseFunc.add(ms)
Exemplo n.º 3
0
def send_message_seven(user):
    text = "Добрый день. Ваша подписка на онлайн-курс Юланы Селивановой «Здоровая кожа» заканчивается через неделю. Успейте посмотреть все уроки, которые откладывали на потом. Когда подписка закончится ее можно будет возобновить через бота Telegram."
    data = {'chat_id': user.chat_id, 'text': text}

    answer = create_requets("POST", "sendMessage", data=data)
    message_id = json.loads(answer)['result']["message_id"]
    message = Message(user_id=user.id, message_id=message_id)
    DataBaseFunc.add(message)
Exemplo n.º 4
0
    def get_user_from_message(message: types.Message):
        """Возвращает пользователя из сообщения администратора"""
        if (message.forward_from):
            user = DataBaseFunc.get_user(message.forward_from.id)
            if (user == None):
                user = User(id=message.forward_from.id,
                            username=message.forward_from.username,
                            is_register=True,
                            lng="Russian")
                DataBaseFunc.add(user)
            return user

        else:
            return DataBaseFunc.get_user(message.text)
Exemplo n.º 5
0
def send_message(user):
    text = "У вас кончилась подписка, пожалуйста, продлите её, чтобы иметь доступ к каналам."
    text_button = "Продлить подписку"
    keyboard = json.dumps({
        "inline_keyboard": [[{
            "text": "Продлить подписку",
            "callback_data": "subscribe_continue_pay"
        }],
                            [{
                                "text": "Связаться с менеджером",
                                "callback_data": "continue_subs_manager",
                                "url": "t.me/oxybes"
                            }]]
    })

    data = {'chat_id': user.chat_id, 'text': text, 'reply_markup': keyboard}

    answer = create_requets("POST", "sendMessage", data=data)
    message_id = json.loads(answer)['result']["message_id"]
    message = Message(user_id=user.id, message_id=message_id)
    DataBaseFunc.add(message)
Exemplo n.º 6
0
async def start_message(message: types.Message):
    """Обработчик команды /start."""
    user = DataBaseFunc.get_user(message.from_user.id)

    if user != None:
        if (user.chat_id != message.chat.id):
            user.chat_id = message.chat.id
            DataBaseFunc.commit()

    await message.delete()

    if user == None:
        user = User(id=message.from_user.id,
                    username=message.from_user.username,
                    chat_id=message.chat.id,
                    is_check_seven_days=False)
        DataBaseFunc.add(user)
        DataBaseFunc.commit()
        mess = await message.answer(
            get_text(user, 'register'),
            reply_markup=UserGeneratorKeyboard.register_button(user))
        await DataBaseFunc.delete_messages(user)
        ms = Message(user_id=user.id, message_id=mess.message_id)
        DataBaseFunc.add(ms)
        await UserStateRegister.main_menu.set()

    elif user.is_register == False:
        if (user.chat_id == None):
            user.chat_id = message.chat.id
        mess = await message.answer(
            get_text(user, 'register'),
            reply_markup=UserGeneratorKeyboard.register_button(user))
        await DataBaseFunc.delete_messages(user)
        ms = Message(user_id=user.id, message_id=mess.message_id)
        DataBaseFunc.add(ms)
        await UserStateRegister.main_menu.set()

    else:
        if (user.chat_id == None):
            user.chat_id = message.chat.id
        mess = await message.answer(get_text(user, 'start'),
                                    reply_markup=await
                                    UserGeneratorKeyboard.start_button(user))
        await DataBaseFunc.delete_messages(user)
        ms = Message(user_id=user.id, message_id=mess.message_id)
        DataBaseFunc.add(ms)
        await UserStateMainMenu.main_menu.set()