async def enter_phone_number(msg, state, language):
    if not msg.text.startswith("+") or not msg.text.strip("+").isnumeric():
        return await msg.reply(context[language].invalid_input)

    async with state.proxy() as data:
        name = data['name']
        age = data['age']
        phone_number = int(msg.text.strip("+"))
    await state.finish()

    user = User()
    user.id = msg.from_user.id
    user.name = name
    user.age = age
    user.phone_number = phone_number
    user.username = msg.from_user.username
    db.session.add(user)
    try:
        db.session.commit()
        return await msg.reply(context[language].user_registered,
                               reply_markup=ReplyKeyboardRemove())
    except Exception as err:
        print(f"Database commit error: {err}")
        db.session.rollback()
        db.session.remove()
        return await msg.reply(context[language].error_occurred,
                               reply_markup=ReplyKeyboardRemove())
Exemple #2
0
async def process_choose_old_deadline(message: Message, state: FSMContext):
    user_data = await state.get_data()

    if message.text not in Database.show(subject=user_data['subject'],
                                         task=user_data['task']):
        await message.reply('Выберите дедлайн, используя клавиатуру ниже')
        return

    deadline = message.text[-10:]
    await state.update_data(deadline=deadline)
    user_data = await state.get_data()
    query = Query(subject=user_data['subject'],
                  task=user_data['task'],
                  deadline='.'.join(reversed(user_data['deadline'].split('.'))))
    if user_data['type'] == QueryTypes.DEL:
        Database.delete(query)
        await message.answer(f'Дедлайн {user_data["task"]} '
                             f'по предмету {user_data["subject"]} '
                             f'от {user_data["deadline"]} был удален',
                             reply_markup=ReplyKeyboardRemove())
        await state.finish()
    else:  # QueryTypes.UPD
        await message.answer('Введите дату дедлайна в формате ДД.ММ.ГГГГ',
                             reply_markup=ReplyKeyboardRemove())
        await StateMachine.waiting_for_new_date.set()
Exemple #3
0
async def get_news(message: types.Message):
    await message.answer("Работаю, подождите...")
    all_posts = await get_gazzetta_rss_links()
    user_id = message.from_user.id
    sent_msgs = db.get_sent_messages(user_id)
    posts = [
        post for post in all_posts
        if "gazzetta" in post and "video" not in post and post not in sent_msgs
    ]

    for post in posts:
        rawtext, translation = await get_gazzetta_news(post)
        if translation:
            await message.answer(post)
            if len(translation) <= 3500:
                await message.answer(translation,
                                     reply_markup=ReplyKeyboardRemove())
            else:
                fivek = ""
                for sentence in sent_tokenize(text=translation,
                                              language="russian"):
                    if len(fivek + sentence) < 3500:
                        fivek += sentence
                    else:
                        await message.answer(fivek)
                        fivek = sentence
                await message.answer(fivek, reply_markup=ReplyKeyboardRemove())

            if post not in db.gazzetta_posts_links():
                db.add_gazzetta_post(post, rawtext, translation)
        db.add_to_sent_messages(user_id, post)
    await message.answer("Нет больше постов",
                         reply_markup=ReplyKeyboardRemove())
async def handle_action_choise(message: types.Message, state: FSMContext):
    logging.info("Handling action choice...")
    if message.text == "Delete":
        try:
            Session = sessionmaker(bind=engine)
            session = Session()
            id_ = await state.get_data()
            id_ = id_["id_"]
            task_to_delete = session.query(Task).filter(Task.id_ == id_).one()
            session.delete(task_to_delete)
            session.commit()
            if session.query(Task).filter(Task.id_ == id_).count() == 0:
                await message.answer("Задача успешно удалена!",
                                     reply_markup=ReplyKeyboardRemove())
        except Exception as e:
            await message.answer(str(e))
            return

    elif message.text == "Update":
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
        keyboard.row("Date", "Text", "Priority")
        await message.answer("Выберите, что вы хотите обновить:",
                             reply_markup=keyboard)
        await ManageTasks.on_update.set()

    elif message.text == "Cancel":
        await message.answer("Выхожу из интерфейса.",
                             reply_markup=ReplyKeyboardRemove())
        await state.finish()
        return

    else:
        await message.answer("Пожалуйста, выберите действие из списка ниже")
Exemple #5
0
async def partner_choice(m: Message, repo: Repo, state: FSMContext):
    if m.text == "👌 Все правильно":
        partner_data = await state.get_data()
        await repo.add_partner(userid=partner_data['admin_id'],
                               city=partner_data['city'].lower())
        await state.finish()
        try:
            await m.bot.send_message(chat_id=partner_data['admin_id'],
                                     text=f"""
Здравствуйте, Вы назначены <b>администратором города {partner_data['city'].title()}!</b>
Используйте команду /start для обновления данных.""")
            await m.answer(text=f"""Вы добавили партнера!
Подключенный город - <b>{partner_data['city'].title()}</b>.
Администратором назначен ID <b>{partner_data['admin_id']}</b>.""",
                           reply_markup=ReplyKeyboardRemove())
        except exceptions.ChatNotFound:
            text = f"""<b>Вы добавили партнера, но мы не смогли уведомить его об этом!</b>\n
Отправьте партнеру <a href="https://t.me/dostavka30rus_bot">ссылку на бота</a> и попросите активировать его"""
            await m.answer(text=text, reply_markup=ReplyKeyboardRemove())
            await manage_bot(m, repo)
        partner_data = await repo.get_partner(city=partner_data['city'])
        await m.answer(text=await generate_partner_data_message(
            partner_data=partner_data, m=m))

        await manage_bot(m, repo)

    elif m.text == "🔄 Заполнить заново":
        await state.finish()
        await m.answer(text="🏙️ Введите название города-партнера:",
                       reply_markup=return_to_menu)
        await NewPartner.first()

    elif m.text == "🏠 Вернуться в меню":
        await manage_bot(m, repo)
async def process_filter_type(message: Message, state: FSMContext):
    async with state.proxy() as data:
        data['filter_type'] = message.text
    if data['filter_type'] in ['Январь-Март', 'Апрель-Июнь', 'Июль-Сентябрь', 'Октябрь-Декабрь', 'Весь год']:
        responses = date_response(data)
        if responses:
            if len(responses) < 6:
                for r in responses:
                    await message.reply(text_answer(r), parse_mode='HTML', reply=False,
                                        reply_markup=ReplyKeyboardRemove())
            else:
                pdf_table(responses)
                # f = os.path.abspath(os.curdir) + '/event_table.pdf'
                await message.answer('В выбранный период слишком много соревнований. '
                                     'Вам будет отправлен pdf файл', reply_markup=ReplyKeyboardRemove())
                await bot.send_document(message.from_user.id, document=InputFile('event_table.pdf'))

        else:
            await message.reply('В выбранный период нет соревнований', reply_markup=ReplyKeyboardRemove())
    else:
        responses = name_response(data)
        if responses:
            if len(responses) < 6:
                for r in responses:
                    await message.reply(text_answer(r), parse_mode='HTML', reply=False,
                                        reply_markup=ReplyKeyboardRemove())
            else:
                pdf_table(responses)
                await message.answer('По выбранному имени слишком много соревнований. '
                                     'Вам будет отправлен pdf файл.', reply_markup=ReplyKeyboardRemove())
                await bot.send_document(message.from_user.id, document=InputFile('event_table.pdf'))

        else:
            await message.reply('По введённому названию ничего не найдено', reply_markup=ReplyKeyboardRemove())
    await state.finish()
async def process_update(message: types.Message, state: FSMContext):
    logging.info("Processing update value choice...")
    if message.text == "Date":
        await ManageTasks.on_update_date.set()
        await message.answer("Введите новое значение, ",
                             reply_markup=ReplyKeyboardRemove())

    elif message.text == "Text":
        await ManageTasks.on_update_text.set()
        await message.answer("Введите новое значение",
                             reply_markup=ReplyKeyboardRemove())

    elif message.text == "Priority":
        await ManageTasks.on_update_priority.set()
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
        keyboard.add("Зеленый")
        keyboard.add("Желтый")
        keyboard.add("Красный")
        keyboard.add("Cancel")
        await message.answer("Выберите новое значение", reply_markup=keyboard)
    elif message.text == "Cancel":
        await message.answer("Выхожу из интерфейса.",
                             reply_markup=ReplyKeyboardRemove())
        await state.finish()
        return
async def reg_6(message: Message, state: FSMContext):
    answer = message.text
    if (answer == "Подтвердить"):
        full_data = await state.get_data()
        print(full_data)
        if full_data.get("name").isalpha() and full_data.get(
                "surname").isalpha():
            name = full_data.get("name")
            surname = full_data.get("surname")
            num_group = full_data.get("group")
            gradebook = full_data.get("gradebook")
            age = full_data.get("age")
            user_id = message.from_user.id
            try:
                db.add_new_student(user_id, name, surname, gradebook,
                                   num_group, age)
                await message.answer("Регистрация прошла успешно!☺",
                                     reply_markup=ReplyKeyboardRemove())
            except:
                await message.answer("Вы уже зарегистрированны в системе",
                                     reply_markup=ReplyKeyboardRemove())
        else:
            await message.answer("Вы ввели неверные данные",
                                 reply_markup=ReplyKeyboardRemove())
    elif (answer == "Изменить данные"):
        await message.answer("Введите ваше имя:",
                             reply_markup=ReplyKeyboardRemove())
        await RegistrationStudent.name.set()
        return
    await state.finish()
Exemple #9
0
async def add_task_final(message: types.Message, state: FSMContext):
    print(message.text)
    if message.text == "Cancel":
        await message.answer("Выхожу из интерфейса добавления задачи.",
                             reply_markup=ReplyKeyboardRemove())
        await state.finish()
        return
    elif message.text == "Зеленый":
        priority = 0
    elif message.text == "Желтый":
        priority = 1
    elif message.text == "Красный":
        priority = 2
    else:
        await message.answer("Что-то пошло не так, попробуйте еще раз.")

    #await message.answer("Выберите дату/время или нажмите на Cancel,\nесли хотите прекратить выполнение задачи;\nНажмите на Default, чтобы добавить задачу без времени.", reply_markup=keyboard)
    user_data = await state.get_data()
    new_task = Task(task=user_data["task"],
                    date=user_data["date"],
                    priority=priority)
    Session = sessionmaker(bind=engine)
    session = Session()
    session.add(new_task)
    session.commit()

    await message.answer(new_task, reply_markup=ReplyKeyboardRemove())
    await state.finish()
async def get_answer(message: Message):                                               # ответа главного меню
    await message.answer(f"Выбрано: {message.text}")  # reply_markup=ReplyKeyboardRemove()
    if message.text == 'Кодировать сообщение':
        await Morse.code_english_to_morse.set()  # Устанавливается новое состояние для кодирования
        await message.answer('Введи сообщение на английском, которое необходимо закодировать в Азбуку Морзе:',
                             reply_markup=ReplyKeyboardRemove())  # Убирается главное меню для ввода и преобразования
    elif message.text == 'Декодировать сообщение':
        await Morse.code_morse_to_english.set()  # Устанавливается новое состояния для декодирования
        await message.answer('Введи сообщение на Азбуке Морзе, которое необходимо декодировать в простое английское '
                             'сообщение:',
                             reply_markup=ReplyKeyboardRemove())  # Убирается главное меню для ввода и преобразования
async def get_money(message: types.Message, state: FSMContext):
    money = message.text
    data = await state.get_data()
    await state.update_data(money=money)
    if data.get("language") == constants.Uz:
        await message.answer(
            f"Qo\'shimcha ma\'lumotingiz bormi?", reply_markup=ReplyKeyboardRemove())
    else:
        await message.answer(
            f"У вас есть дополнительная информация?", reply_markup=ReplyKeyboardRemove())
    await States.next()
Exemple #12
0
async def restart(message: types.Message, state: FSMContext):
    """Restart"""
    allowed_users = await db.select_all_user_id()
    if message.from_user.id in allowed_users:
        await state.finish()
        await db.change_status(message.from_user.id, False)
        await message.answer("Перезагружен",
                             reply_markup=menu)
    else:
        try:
            ch1 = await bot.get_chat_member(chat_id=GROUP, user_id=message.from_user.id)
            print(ch1.status)
            ch = await bot.get_chat_member(chat_id=CHANNEL, user_id=message.from_user.id)
            print(ch.status)
            if ch1.status == ch.status == 'member':
                try:
                    await db.add_user(user_id=message.from_user.id, name=message.from_user.full_name, status=False,
                                      filter=None, ads_id_1=None, ads_id_2=None, ads_id_3=None, ads_id_4=None,
                                      ads_id_5=None)
                    await message.answer(f'Привет, {message.from_user.full_name}! '
                                         f'Если Вам нужна помощь, нажмите на клавиатуре кнопку Помощь/Инструкция или '
                                         f'введите команду /help',
                                         reply_markup=menu)
                except:
                    print("Что-то пошло не так")

            elif ch1.status == ch.status == 'left':
                await message.answer(f'Для того, чтобы пользоваться ботом'
                                     f' Вам нужно подписаться на нашу группу и новостной канал\n{GROUP}\n{CHANNEL}\n',
                                     reply_markup=ReplyKeyboardRemove())
                await message.answer(f'Если вы уже подписались нажмите',
                                     reply_markup=check_subscriptionsewq)
            elif ch1.status == 'left' and ch.status == 'member':
                await message.answer(f'Для того, чтобы пользоваться ботом'
                                     f' Вам нужно подписаться на нашу группу\n{GROUP}\n',
                                     reply_markup=ReplyKeyboardRemove())
                await message.answer(text=f'Если вы уже подписались нажмите',
                                     reply_markup=check_subscriptionsewq)
            elif ch1.status == 'member' and ch.status == 'left':
                await message.answer(f'Для того, чтобы пользоваться ботом'
                                     f' Вам нужно подписаться на наш новостной канал\n{CHANNEL}\n',
                                     reply_markup=ReplyKeyboardRemove())
                await message.answer(text=f'Если вы уже подписались нажмите',
                                     reply_markup=check_subscriptionsewq)


        except:
            await message.answer(f'Для того, чтобы пользоваться ботом'
                                 f' Вам нужно подписаться на нашу группу и новостной канал\n{GROUP}\n{CHANNEL}\n',
                                 reply_markup=ReplyKeyboardRemove())
            await message.answer(text=f'Если вы уже подписались нажмите',
                                 reply_markup=check_subscriptionsewq)
Exemple #13
0
async def start_quiz(message: types.Message):
    if db.get_current_question(user_id=message.from_user.id) > 30:
        text = MESSAGES['you are finished']
        markup = ReplyKeyboardRemove()
    else:
        await Quiz.Task1.set()
        db.increment_current_question(message.from_user.id, 0)
        text = questions[1]['Question']
        markup = ReplyKeyboardMarkup(resize_keyboard=True,
                                     one_time_keyboard=True)
        for choice in questions[1]['Choices']:
            choice_btn = KeyboardButton(choice)
            markup.add(choice_btn)
    await message.reply(text, reply_markup=markup, reply=False)
Exemple #14
0
async def check_subscriptions(call: types.CallbackQuery):
    """Проверяем подписку"""
    await call.message.edit_reply_markup()
    try:
        ch1 = await bot.get_chat_member(chat_id=GROUP, user_id=call.from_user.id)
        print(ch1.status)
        ch = await bot.get_chat_member(chat_id=CHANNEL, user_id=call.from_user.id)
        print(ch.status)
        if ch1.status == ch.status == 'member':
            try:
                await db.add_user(user_id=call.from_user.id, name=call.from_user.full_name, status=False,
                                  filter=None, ads_id_1=None, ads_id_2=None, ads_id_3=None, ads_id_4=None,
                                  ads_id_5=None)
                await call.message.answer(f'Привет, {call.from_user.full_name}! '
                                          f'Если Вам нужна помощь, нажмите на клавиатуре кнопку Помощь/Инструкция или '
                                          f'введите команду /help',
                                          reply_markup=menu)
            except:
                print("Что-то пошло не так")

        elif ch1.status == ch.status == 'left':
            await call.message.edit_reply_markup()
            await call.message.answer(f'Для того, чтобы пользоваться ботом'
                                      f' Вам нужно подписаться на нашу группу и новостной канал\n{GROUP}\n{CHANNEL}\n',
                                      reply_markup=ReplyKeyboardRemove())
            await call.message.answer(text=f'Если вы уже подписались нажмите', reply_markup=check_subscriptionsewq)
        elif ch1.status == 'left' and ch.status == 'member':
            await call.message.edit_reply_markup()
            await call.message.answer(f'Для того, чтобы пользоваться ботом'
                                      f' Вам нужно подписаться на нашу группу\n{GROUP}\n',
                                      reply_markup=ReplyKeyboardRemove())
            await call.message.answer(text=f'Если вы уже подписались нажмите',
                                      reply_markup=check_subscriptionsewq)
        elif ch1.status == 'member' and ch.status == 'left':
            await call.message.edit_reply_markup()
            await call.message.answer(f'Для того, чтобы пользоваться ботом'
                                      f' Вам нужно подписаться на наш новостной канал\n{CHANNEL}\n',
                                      reply_markup=ReplyKeyboardRemove())
            await call.message.answer(text=f'Если вы уже подписались нажмите',
                                      reply_markup=check_subscriptionsewq)


    except:
        await call.message.edit_reply_markup()

        await call.message.answer(f'Для того, чтобы пользоваться ботом'
                                  f' Вам нужно подписаться на нашу группу и новостной канал\n{GROUP}\n{CHANNEL}\n',
                                  reply_markup=ReplyKeyboardRemove())
        await call.message.answer(text=f'Если вы уже подписались нажмите',
                                  reply_markup=check_subscriptionsewq)
async def answer_q2(message: types.Message, state: FSMContext):
    answer = message.text
    data = await state.get_data()
    answer1 = data.get("answer1")
    if answer == 'Да':
        try:
            cid = get_cid_by_name(answer1)
            leave_course(message.from_user.id, cid)
            await message.answer('Вы покинули курс {}!'.format(answer1),
                                 reply_markup=ReplyKeyboardRemove())
        except:
            await message.answer('Что-то пошло не так....',
                                 reply_markup=ReplyKeyboardRemove())
    await state.finish()
Exemple #16
0
async def checkout(query: types.CallbackQuery, state: FSMContext, *args,
                   **kwargs):
    user_data = await state.get_data()
    cart = user_data.get('cart', [])
    if not cart:
        await query.message.reply(replies.CART_IS_EMPTY,
                                  reply=False,
                                  reply_markup=ReplyKeyboardRemove())
        await query.answer()
        return
    await query.message.reply(replies.ASK_FOR_ADDRESS,
                              reply=False,
                              reply_markup=ReplyKeyboardRemove())
    await states.CheckoutStates.waiting_for_address.set()
    await query.answer()
Exemple #17
0
async def process_choice_time(msg: Message, state: FSMContext):
    """
    Пользователю предлагается выбрать время в которое он будет получать уведомления
    о том что нужно составить список дел на день
    """
    if msg.text.lower() == 'да':
        await state.update_data(subscription_status=1)
        await msg.answer(Daily_message.start_time.value, reply_markup=ReplyKeyboardRemove())
        await Daily.start_time.set()
    elif msg.text.lower() == 'отмена':
        await state.finish()
        await msg.answer(Daily_message.action_canceled.value, reply_markup=ReplyKeyboardRemove())
    else:
        await msg.answer(Daily_message.push_btn_below.value)
        return
Exemple #18
0
async def get_book(message: types.Message):
    if message.text == '😂':
        await message.answer('Так счастлив, что аж проливает слезы радости. '
                             'Имеет приступ смеха и не может сдержать себя.',
                             reply_markup=ReplyKeyboardRemove())
    elif message.text == '😎':
        await message.answer('Я король мира! Мистер крутой смайлик в солнцезащитных очках. '
                             'Полностью уверен в себе и расслаблен. Все абсолютно легко и круто.',
                             reply_markup=ReplyKeyboardRemove())
    else:
        await message.answer('«Грибное» облако. Иногда у вас бывают дни, когда вы понимаете, '
                             'что никогда ранее не осознавали. Вы осознаете те моменты, '
                             'которые заставляют задуматься и помогают дать ответ на вопрос'
                             ' "почему я никогда этого не замечал?"',
                             reply_markup=ReplyKeyboardRemove())
async def choose_tasks_action(query: types.CallbackQuery, state: FSMContext):
    #print("TEXT", query.data)
    try:

        id_ = int(query.data)
        Session = sessionmaker(bind=engine)
        session = Session()
        response = session.query(Task).filter(Task.id_ == id_).all()
        if len(response) > 0:

            keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
            keyboard.row("Delete", "Update")
            keyboard.add("Cancel")

            await state.update_data(id_=id_)
            await bot.send_message(
                query["from"]["id"],
                f"Выбрана задача ({id_}). Выберите действие",
                reply_markup=keyboard)
            await ManageTasks.waiting_for_action_choice.set()
        else:
            await bot.send_message(
                query["from"]["id"],
                "Неправильно выбрано действие, выхожу из интерфейса",
                reply_markup=ReplyKeyboardRemove())
            await state.finish()
            return

    except Exception as e:
        logging.warning("SNAFU")
        logging.warning(str(e))
        return
Exemple #20
0
async def get_teachers_subjects(message: Message, state: FSMContext):
    data = await state.get_data()
    first_name = data.get('first_name')
    last_name = data.get('last_name')
    school = data.get('school')
    group = data.get('group')
    teacher_subjects = data.get('teacher_subjects')
    pargroup = data.get('pargroup')
    username = data.get('username')
    if message.text.upper() == 'ДА':
        await db.add_teachers(id=message.from_user.id,
                              username=username,
                              first_name=first_name,
                              last_name=last_name,
                              school=school,
                              groups=group,
                              subject=teacher_subjects,
                              pargroup=int(pargroup))
        await bot.send_photo(
            chat_id=message.from_user.id,
            photo='https://i.ibb.co/KGHt21B/photo-2020-08-22-00-20-52.jpg',
            caption='Вы успешно внесены в базу данных!\n\n'
            'Если у вас не появились кнопки снизу, то нажмите на '
            'эту кнопку возле ввода текста',
            reply_markup=Teachers_buttons)
        await state.finish()
    elif message.text.upper() == 'НЕТ':
        await message.answer('Введите вашу <b><u>фамилию и имя</u></b>',
                             reply_markup=ReplyKeyboardRemove())
        await TeacherRegister.user_name.set()
    else:
        await message.answer('<b>Вы не ответили на вопрос!</b>',
                             reply_markup=yes_or_no)
async def process_update_priority(message: types.Message, state: FSMContext):
    logging.info("Processing task priority update...")
    if message.text == "Зеленый":
        Session = sessionmaker(bind=engine)
        session = Session()
        id_ = await state.get_data()
        id_ = id_["id_"]
        session.query(Task).filter(Task.id_ == id_).update(
            {Task.priority: 0}, synchronize_session=False)
        session.commit()
    elif message.text == "Желтый":
        Session = sessionmaker(bind=engine)
        session = Session()
        id_ = await state.get_data()
        id_ = id_["id_"]
        session.query(Task).filter(Task.id_ == id_).update(
            {Task.priority: 1}, synchronize_session=False)
    elif message.text == "Красный":
        Session = sessionmaker(bind=engine)
        session = Session()
        id_ = await state.get_data()
        id_ = id_["id_"]
        session.query(Task).filter(Task.id_ == id_).update(
            {Task.priority: 2}, synchronize_session=False)
        session.commit()
    elif message.text == "Cancel":
        await message.answer("Выхожу из интерфейса.",
                             reply_markup=ReplyKeyboardRemove())
        await state.finish()
        return
Exemple #22
0
async def address(message: types.Message, state: FSMContext):
    # Достаем переменные
    data = await state.get_data()
    phone = data.get("phone")
    address = data.get("address")
    tariff = message.text
    user_abon = message.from_user.username
    await message.answer("Дякуємо!", reply_markup=ReplyKeyboardRemove())
    await message.answer(
        f"Ви ввели\n"
        f"телефон: {phone}\n"
        f"Адресу: {address}\n"
        f"Тариф: {tariff}\n"
        f"Очікуйте дзвінка оператора для визначення часу підключення\n"
        f" і щодо додаткових послуг")
    text = f"Підключка @{user_abon} \nТелефон: {phone} Адрес: {address} Тариф: {tariff}"

    for admin in ADMINS:
        try:
            await bot.send_message(
                admin, f"Підключка @{user_abon} \n"
                f"Телефон: {phone} Адрес: {address} Тариф: {tariff}\n")
            await sleep(0.3)
        except Exception:
            pass
    await state.finish()
async def AdminGroupReset(query: types.CallbackQuery, state: FSMContext):
    await query.message.answer("De registratie van een nieuwe groep is geannuleerd",
                               reply_markup=ReplyKeyboardRemove(), disable_notification=True)
    await state.finish()
    await query.answer()
    await query.delete()
    await query.message.delete()
Exemple #24
0
async def edit_diesel_profile(call: CallbackQuery):
    await call.answer(cache_time=60)
    await call.message.edit_reply_markup()
    await call.message.answer(
        text='Введите ваши данные Diesel Elcat kg\n\nВведите username...',
        reply_markup=ReplyKeyboardRemove())
    await Login_info.first()
Exemple #25
0
async def bot_start(message: types.Message):
    await message.answer(f"Привет, {message.from_user.full_name}!",
                         reply_markup=ReplyKeyboardRemove())
    if not db.select_user(user_id=message.from_user.id):
        await message.answer("Добавляем тебя в БД...")
        db.add_user(message.from_user.id)
    await message.answer("Готов к работе!", reply_markup=add_feed)
Exemple #26
0
async def read_set_name(msg: Message, state: FSMContext):
    user = msg.from_user
    set_name = msg.text

    if len(set_name) > 50:
        await msg.answer("Название набора не должно первышать 50 символов 🥴\n"
                         "Попробуй ввести его ещё раз:")
        return
    await state.update_data(set_name=set_name)

    photo_id: str = await redis_commands.get_photo_id(user.id)
    await msg.bot.send_chat_action(user.id, "upload_photo")

    img_file = BytesIO()
    await (await msg.bot.get_file(photo_id)).download(destination=img_file)
    drawn_img = await get_drawn_img(img_file)

    crop_range_str = await redis_commands.get_last_crop_range_str(user.id)
    await msg.answer_photo(
        drawn_img,
        caption="Введи диапозон высот по которому обрежется часть "
        "картинки с английским словом и с переводом.\n\n"
        "Диапозон: верхняя граница слова, граница между словом и переводом, "
        "нижняя граница слова.\n\n"
        "<i>Пример ввода: 300 470 1150</i>",
        reply_markup=keyboards.default.get_text_menu(crop_range_str)
        if crop_range_str else ReplyKeyboardRemove())

    await AddingSet.config_sizes.set()

    logging.info(f"@{user.username}-{user.id} read set name {set_name}")
Exemple #27
0
async def process_quality(message: Message, state: FSMContext):
    quality = message.text
    async with state.proxy() as data:
        data['quality'] = quality
    await PersonalTuning.next()
    await message.reply('Напишите короткое описание завала.',
                        reply_markup=ReplyKeyboardRemove())
Exemple #28
0
async def choose_date_from_state(message: Message, state: FSMContext):
    await ReportsStates.choose_date_from_state.set()

    await state.update_data(message=message)
    await message.answer("Выберите начало периода:",
                         reply_markup=ReplyKeyboardRemove())
    await message.answer("_", reply_markup=create_calendar())
Exemple #29
0
async def enroll_event(obj: types.base.TelegramObject):
    callback = False
    callback_query = None
    if isinstance(obj, types.CallbackQuery):
        callback = True
        callback_query = obj
        message = obj.message
        uid = callback_query.from_user.id
    elif isinstance(obj, types.Message):
        message = obj
        uid = message.from_user.id
    else:
        return
    state = dp.current_state(user=uid)
    with session_scope() as session:
        if callback:
            event_id = await user_notify_context.get(user=uid,
                                                     key=message.message_id)
        else:
            event_q = session.query(Event) \
                .filter(Event.title == message.text)
            if event_q.count() == 0:
                return
            event: Event = event_q.all()[0]
            event_id = event.id
        await state.set_data({'event_id': event_id})

        user_q = session.query(User) \
            .filter(User.uid == uid)
        user: User = user_q.all()[0]

        enrolled_q = session.query(Enrollment) \
            .join(User) \
            .filter(User.uid == uid) \
            .filter(Enrollment.event_id == event_id)

        if enrolled_q.count() == 0:
            # create enrollment
            enrollment = Enrollment(user_id=user.id,
                                    event_id=event_id,
                                    complete=False) \
                .insert_me(session)
            logging.info(f'enrollment created: {enrollment}')
        else:
            enrollment = enrolled_q.all()[0]

        # build message
        if enrollment.complete:
            m_text = MESSAGES['registration_exists']
            remove_keyboard = None
        else:
            m_text = MESSAGES['invoice_prompt']
            remove_keyboard = ReplyKeyboardRemove()
            await state.set_state(UserStates.all()[3])
        await message.reply(m_text,
                            parse_mode=ParseMode.MARKDOWN,
                            reply=False,
                            reply_markup=remove_keyboard)
        if callback:
            await bot.answer_callback_query(callback_query.id)
async def get_contact(message: types.Message):
    answer = message.contact
    await message.answer(
        f'Ваш телефонный номер: {answer.phone_number}',
        reply_markup=ReplyKeyboardRemove()  # убирает инлайн
    )
    await message.answer("А сейчас введите сумму которую вы хотите получить.")