示例#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()
示例#2
0
async def register_phone_write(message: types.Message, state: FSMContext):
    """Ввод номера телефона."""
    await message.delete()
    user = DataBaseFunc.get_user(message.from_user.id)
    data = await state.get_data()
    message_id = data['callback_message_id']
    phone = "".join(ch for ch in message.text if ch.isdigit())
    if (phone[0] == '8'):
        phone = '7' + phone[1:]
    errors = get_text(user, 'write_phone_errors')
    keyboard = UserGeneratorKeyboard.register_button(user)
    # keyboard = types.InlineKeyboardMarkup()
    # keyboard.add(types.InlineKeyboardButton(get_text_but(user, 'register_write_back'), callback_data="register_write_back"))

    if len(phone) == 0:
        await bot.edit_message_text(text=errors['empty'],
                                    chat_id=message.chat.id,
                                    message_id=message_id,
                                    reply_markup=keyboard)
        await UserStateRegister.main_menu.set()
        return

    check_user = DataBaseFunc.get_user_for_phone(phone)
    if (check_user != None):
        await bot.edit_message_text(text=errors['is_register'],
                                    chat_id=message.chat.id,
                                    message_id=message_id,
                                    reply_markup=keyboard)
        await UserStateRegister.main_menu.set()
        return

    contact = DataBaseFunc.get_contact(phone=phone)
    if (contact == None):
        await bot.edit_message_text(text=errors['not_found'],
                                    chat_id=message.chat.id,
                                    message_id=message_id,
                                    reply_markup=keyboard)
        await UserStateRegister.main_menu.set()
        return

    user.phone = phone
    user.mail = contact.mail
    user.is_register = True
    user.course_id = contact.course_id
    contact.is_register = True
    DataBaseFunc.commit()

    DataBaseFunc.add_course_in_user(user,
                                    DataBaseFunc.get_course(user.course_id))
    await bot.edit_message_text(text=get_text(user, 'start'),
                                chat_id=message.chat.id,
                                message_id=message_id,
                                reply_markup=await
                                UserGeneratorKeyboard.start_button(user))
    await UserStateMainMenu.main_menu.set()
示例#3
0
async def register_mail_write(message: types.Message, state: FSMContext):
    """Ввод номера телефона."""
    await message.delete()
    user = DataBaseFunc.get_user(message.from_user.id)
    data = await state.get_data()
    message_id = data['callback_message_id']
    mail = message.text
    mail = mail.lower()
    errors = get_text(user, 'write_mail_errors')
    keyboard = UserGeneratorKeyboard.register_button(user)
    # keyboard = types.InlineKeyboardMarkup()
    # keyboard.add(types.InlineKeyboardButton(get_text_but(user, 'register_write_back'), callback_data="register_write_back"))

    if ("@" in mail) == False:
        await bot.edit_message_text(text=errors['empty'],
                                    chat_id=message.chat.id,
                                    message_id=message_id,
                                    reply_markup=keyboard)
        await UserStateRegister.main_menu.set()
        return

    check_user = DataBaseFunc.get_user_for_mail(mail)
    if (check_user != None):
        await bot.edit_message_text(text=errors['is_register'],
                                    chat_id=message.chat.id,
                                    message_id=message_id,
                                    reply_markup=keyboard)
        await UserStateRegister.main_menu.set()
        return

    contact = DataBaseFunc.get_contact(mail=mail)
    if (contact == None):
        await bot.edit_message_text(text=errors['not_found'],
                                    chat_id=message.chat.id,
                                    message_id=message_id,
                                    reply_markup=keyboard)
        await UserStateRegister.main_menu.set()
        return

    user.mail = mail
    user.phone = contact.phone
    user.is_register = True
    contact.is_register = True
    user.course_id = contact.course_id
    DataBaseFunc.commit()

    DataBaseFunc.add_course_in_user(user,
                                    DataBaseFunc.get_course(user.course_id))
    await bot.edit_message_text(text=get_text(user, 'start'),
                                chat_id=message.chat.id,
                                message_id=message_id,
                                reply_markup=await
                                UserGeneratorKeyboard.start_button(user))
    await UserStateMainMenu.main_menu.set()
async def managing_users_main_menu_add_course_choose_user_add(
        callback: types.CallbackQuery, state: FSMContext):
    """Обработка кнопки добавить подписку пользователю"""
    await callback.answer()
    data = await state.get_data()
    user = DataBaseFunc.get_user(callback.from_user.id)
    user_add = DataBaseFunc.get_user(data['user_add_course_id'])
    course = DataBaseFunc.get_course(data['course_id'])
    DataBaseFunc.add_course_in_user(user_add, course)
    user.subscribe_end = False
    user.is_register = True
    DataBaseFunc.commit()
    await callback.message.edit_text(
        get_text(user, 'managing_users_main_menu_add_course_choose_user_add'),
        reply_markup=AdminGenerateKeyboard.admin_main_menu(user))
    await AdminStateMainMenu.admin_menu.set()