async def cmd_id(message: types.Message):
    """
    Return info about user.
    """
    if message.reply_to_message:
        target = message.reply_to_message.from_user
        chat = message.chat
    elif message.forward_from and message.chat.type == ChatType.PRIVATE:
        target = message.forward_from
        chat = message.forward_from or message.chat
    else:
        target = message.from_user
        chat = message.chat

    result_msg = [
        hbold('Info about user:'******'Chat:'), f"Type: {chat.type}", f"Chat ID: {chat.id}"])
    if chat.type != ChatType.PRIVATE:
        result_msg.append(f"Title: {chat.title}")
    else:
        result_msg.append(f"Title: {chat.full_name}")
    return SendMessage(message.chat.id,
                       '\n'.join(result_msg),
                       reply_to_message_id=message.message_id,
                       parse_mode=ParseMode.HTML)
示例#2
0
文件: base.py 项目: zotov-vs/tg_shop
async def cmd_help(message: types.Message):
    logger.info("User {user} read help in {chat}", user=message.from_user.id, chat=message.chat.id)
    text = [
        hbold(_("Here you can read the list of my commands:")),
        _("{command} - Start conversation with bot").format(command="/start"),
        _("{command} - Get this message").format(command="/help"),
        _("{command} - Chat or user settings").format(command="/settings"),
        _("{command} - My version").format(command="/version"),
        "",
    ]

    if types.ChatType.is_private(message):
        text.extend(
            [
                # hbold(_("Available only in PM with bot:")),
                # "",
                _("In chats this commands list can be other")
            ]
        )
    else:
        text.extend(
            [
                hbold(_("Available only in groups:")),
                _("{command} - Report message to chat administrators").format(
                    command="/report, !report, @admin"
                ),
                _("{command} - Set RO mode for user").format(command="!ro"),
                _("{command} - Ban user").format(command="!ban"),
                "",
                _("In private chats this commands list can be other"),
            ]
        )
    await message.reply("\n".join(text))
示例#3
0
def create_report(start, end, chat_id):
    if report_json := get_report_json(start, end, chat_id):
        if report_json['incomes'] is not None and report_json['outcome']:
            report = [hbold(f'📊 Отчет \n{start}\n{end}\n'), hbold('📈 Доходы')]

            for income in report_json['incomes']:
                report.append(
                    f"👤 {income['username']}: {income['user_amount']} ({income['percentage']})"
                )
            report.append(
                hunderline(
                    f"💰 Итого: {report_json['incomes_total_amount']}\n"))

            report.append(hbold('📉 Расходы'))
            for outcome in report_json['outcome']:
                report.append(
                    f"{outcome['category_name']}: {outcome['category_amount']} ({outcome['percentage']})"
                )
            report.append(
                hunderline(f"💰 Итого: {report_json['outcome_total_amount']}"))
            report.append(
                hbold(
                    f"\n💸 Остаток: {round(report_json['incomes_total_amount'] - report_json['outcome_total_amount'], 0)}"
                ))
            return '\n'.join(report)
        else:
            return 'Необходимо заполнить доходы и расходы'
示例#4
0
async def help_cmd(message: types.Message):
    """
    Хендлер на команду /help
    Выводит список комманд.
    Используется в личных сообщениях
    """

    # Создаем текст сообщения
    text = """{header1}
/start - Начать диалог со мной
/help - Помощь по комманде

{header2}
/gay [цель*] -  Тест на гея
/biba - Проверить бибу
/roll - Случайное число
/metabolism - Узнать свою суточную норму калорий

{warning}
""".format(header1=hbold("Основные комманды"),
           header2=hbold("Другие комманды"),
           warning=hbold("В группах функционал бота может отличаться.\n"
                         "* - необязательный аргумент"))

    # Отправляем список комманд
    await message.answer(text)
示例#5
0
async def process_serial(message: types.Message):
    state = dp.current_state(chat=message.chat.id, user=message.from_user.id)
    try:
        serial_id = int(message.text.rsplit("_")[-1])
        log.debug(f"Serial id {serial_id}")
    except Exception:
        return await bot.send_message(message.chat.id,
                                      emojize("Что-то пошло не так:pensive:"))
    serial = await Serial.manager.get(serial_id)
    if not serial:
        return await bot.send_message(
            message.chat.id, emojize("Упс! Сериал не найден:pensive:"))

    msg_text = text(
        hbold(serial["title"]), f'({quote_html(serial["origin_title"])})'
        if serial["origin_title"] else "",
        str(serial["year"]) if serial["year"] else "",
        hbold("\nЗавершён" if serial["finished"] else ""))

    # if not serial.get("voice"):
    await create_subscription(message.chat.id, serial, None)
    return await bot.send_message(
        message.chat.id,
        text(
            "Теперь вы будете получать увидомления о выходе новых серий сериала:\n",
            msg_text),
        parse_mode=ParseMode.HTML)
示例#6
0
async def show_menu_parcel_size(message: types.Message, state: FSMContext):
    chat_id = message.from_user.id
    res_phone = message.text
    if res_phone == '0501111111':
        return await message.answer(
            hbold("Ви ввели номер телефону из прикладу\n"
                  "будь ласка введіть номер телефону отримувача👇"))
    if not re.match(r'^[0]{1}[0-9]{9}$', res_phone):
        await bot.send_sticker(
            chat_id,
            r"CAACAgIAAxkBAAEBV_hfY3oxV-wJjpmg-gY-tQ8vKTEPHgACCwADnP4yMPctMM3hxWgtGwQ"
        )
        return await bot.send_message(
            chat_id,
            hbold("Введений номер телефону: ") + hcode(res_phone) +
            hbold("не відповідає формату\nСпробуйте ще раз"),
            parse_mode=types.ParseMode.HTML)
    res_phone = "38" + res_phone
    print(res_phone)
    await state.update_data(res_phone=res_phone)
    # data = await state.get_data()
    # message_id = data['message_id1']
    # print(data)
    # await bot.delete_message(chat_id,message_id)
    await message.answer(hbold("Чи бажаєте вказати суму післяплати?"),
                         reply_markup=cod_kb,
                         parse_mode=types.ParseMode.HTML)
    await ParcelCreate.get_res_cod.set()
示例#7
0
async def to_sender(message: types.Message, state: FSMContext):
    data = await state.get_data()
    print(data)
    token_sender = data['token_sender']  # Получаем токен отправителя
    password = message.text
    result = verify_token(token_sender, password)
    if result == 104:
        return await message.answer(hbold("Невірний код з СМС"))
    if result == 103:
        await message.delete()
        await message.answer(
            hbold("Ви вичерпали усі спроби, та повернулися до головного меню"),
            reply_markup=menu_uk_kb_show)
        return await state.finish()
    if result is True:
        door_open = types.InlineKeyboardMarkup()
        door_open.add(
            types.InlineKeyboardButton(text="Вкласти", callback_data="insert"))
        door_open.add(
            types.InlineKeyboardButton(text="Відмінити дію",
                                       callback_data="Cancel3"))
        await message.answer(
            hbold('Тепер ви можете відкрити комірку для вкладення у поштомат'),
            reply_markup=door_open)
        # await state.reset_state(with_data=False)
        await ParcelInsert.Insert4.set()
示例#8
0
async def parcel_mode_archive(call: CallbackQuery, state: FSMContext):
    user_id = call.from_user.id
    data = call.data
    print(data)
    await bot.answer_callback_query(callback_query_id=call.id)
    await call.answer(cache_time=60)
    user_data = await if_data_in_response(await db.get_user_data(user_id))
    if user_data is False:
        return await call.message.answer(call.from_user.first_name + hbold(
            ", для початку роботи з сервісом поділіться Вашим номером телефону\n"
            "за допомогою кнопки знизу 👇"),
                                         reply_markup=phone_share_kb)
    user_phone = user_data['phone_number']
    print(user_phone)
    result = await sync_to_async(parcels_delivery_archive)(user_phone, data)
    if result is False:
        await call.message.delete_reply_markup()
        await call.message.delete()
        await call.message.answer(
            call.from_user.first_name +
            hbold(", на цей час у Вас не має архівних посилок."),
            reply_markup=menu_uk_kb_show)
    # Нужно чтоб номер посылки заносился во все кнопки по очереди
    # result = (parcels_for_delivery(user_phone, data))
    else:
        for i in result:
            await call.message.answer(i['text'],
                                      parse_mode=types.ParseMode.HTML)
            await call.message.answer(
                f"{call.from_user.first_name} ,<b>оберіть фільтр для Ваших відправлень</b>",
                reply_markup=my_parcels_callback_kb)
示例#9
0
async def help(message: types.Message):
    """Хендлер на команду /help
    Выводит список комманд.
    Используется в личных сообщениях"""

    # Отправляем список комманд
    await message.answer(
        "{header1}"
        "\n"
        "/start - Начать диалог со мной"
        "\n"
        "/help - Помощь по комманде"
        "\n"
        "\n"
        "{header2}"
        "\n"
        "/gay [цель*] -  Тест на гея"
        "\n"
        "/biba - Проверить бибу"
        "\n"
        "\n"
        "{warning}".format(header1=hbold("Основные комманды"),
                           header2=hbold("Другие комманды"),
                           warning=hbold(
                               "В группах функционал бота может отличаться.\n"
                               "* - необязательный аргумент")))
示例#10
0
async def template_edit_category_handler(message, state: FSMContext, *args,
                                         **kwargs):
    await ChangeTemplate.category_edit.set()
    if isinstance(message, types.CallbackQuery):
        if len(message.data.split(":")) == 3:
            category_name = message.data.split(":")[1]
            category_id = message.data.split(":")[2]
            await state.update_data({
                "category_name": category_name,
                "category_id": category_id
            })
        else:
            category_name = (
                await state.get_data("category_name")).get("category_name")
            category_id = (await
                           state.get_data("category_id")).get("category_id")
        await message.message.edit_text(
            text=hbold(f"Редактирование категории {category_name}"),
            reply_markup=get_template_category_dishes_keyboard(
                category_name, category_id))
    else:
        category_name = (await
                         state.get_data("category_name")).get("category_name")
        category_id = (await state.get_data("category_id")).get("category_id")
        await message.answer(
            text=hbold(f"Редактирование категории {category_name}"),
            reply_markup=get_template_category_dishes_keyboard(
                category_name, category_id))
示例#11
0
async def choose_serial_and_voice(callback_query):
    message = callback_query.message
    state = dp.current_state(chat=message.chat.id)
    try:
        _, serial_id, voice = callback_query.data.rsplit("_", maxsplit=2)
        serial_id = int(serial_id)
        log.debug(f"Serial id: {serial_id} voice: voice")
    except Exception:
        return await bot.answer_callback_query(
            callback_query.id, emojize("Что-то пошло не так:pensive:"))
    serial = await Serial.manager.get(serial_id)
    if not serial or serial and voice not in serial.get("voice", []):
        return await bot.answer_callback_query(
            message.chat.id,
            emojize("Упс! Сериал или озвучка не найдены:pensive:"))

    msg_text = text(
        hbold(serial["title"]), f'({quote_html(serial["origin_title"])})'
        if serial["origin_title"] else "",
        str(serial["year"]) if serial["year"] else "",
        hbold("\nЗавершён" if serial["finished"] else ""))

    await create_subscription(message.chat.id, serial, voice)
    await bot.answer_callback_query(message.chat.id)
    await state.finish()
    return await bot.send_message(
        message.chat.id,
        text(
            "Теперь вы будете получать увидомления о выходе новых серий сериала:",
            msg_text,
            f"В озвучке {hbold(voice)}",
            sep="\n"),
        parse_mode=ParseMode.HTML)
示例#12
0
async def to_receiver(message: types.Message, state: FSMContext):
    data = await state.get_data()
    print("Вы попали в стейт получения")
    token_receiver = data['token_receiver']
    poshtomat_id_ref = data['poshtomatIDRef']
    parcel_id_out = data['parcel_id_out']
    password = message.text
    result = verify_token(token_receiver, password)
    if result == 104:
        return await message.answer("Невірний код з СМС")
    if result == 103:
        await message.delete()
        await message.answer(
            "Ви вичерпали усі спроби, та повернулися до головного меню",
            reply_markup=menu_uk_kb_show)
        return await state.finish()
    if result is True:
        # await message.answer(f"Тепер ви можете відкрити комірку для отримання Вашого відправлення")
        print("Забрать с почтомата")
        trans_id = customer_remove(
            token_receiver, poshtomat_id_ref,
            parcel_id_out)  # Функция вложения в почтомат
        print(trans_id)
        if 'transID' not in trans_id:
            await message.delete()
            error = trans_id['ErrorDetails']
            await message.answer(hbold(error))
            keyboard = types.InlineKeyboardMarkup(row_width=2)
            keyboard.insert(
                types.InlineKeyboardButton(text="Підтримка",
                                           url='t.me/MeestSupport_bot'))
            await message.answer(
                "Зателефонуйте за номерами нашої лінії підтримки поштомтів:\n"
                "+380673735753\n"
                "+380503735753\n"
                "Або зверніться до наших операторів у чаті 👇",
                parse_mode=types.ParseMode.HTML,
                reply_markup=keyboard)
            await message.answer("Ви повернулися до головного меню",
                                 reply_markup=menu_uk_kb_show)
            await state.finish()
        else:
            trans_id = trans_id['transID']
            print(trans_id)
            await state.update_data(trans_id_out=trans_id)
            confirm_kb = types.InlineKeyboardMarkup()
            confirm_kb.add(
                types.InlineKeyboardButton(text="Так я забрав посилку",
                                           callback_data="yes"))
            confirm_kb.add(
                types.InlineKeyboardButton(text="Ні комірка ще зачинена",
                                           callback_data="no"))
            await message.answer(message.from_user.first_name + hbold(
                ",якщо комірка відкрита,заберіть своє відправлення, та зачиніть комірку"
            ),
                                 reply_markup=confirm_kb)
            # await message.answer(reply_markup=confirm_kb)
            # await bot.answer_callback_query(callback_query_id=call.id)
            await state.reset_state(with_data=False)
示例#13
0
async def get_some_day(day: Week, group: int, week: ThisNextWeek, subgroup: int, initial_message: str = ''):
    timetable = await get_day_raw(day, group, subgroup, week)
    if not timetable:
        return hbold(f"{initial_message}:\n\nНет пар!")
    message = [hbold(f"{initial_message}:")]
    for lesson in timetable:
        message.append(Lesson(lesson[0]).do_lesson_str(lesson[1], lesson[2], lesson[3]))
    return '\n\n'.join(message)
示例#14
0
async def choose_out(call: CallbackQuery, state: FSMContext):
    await call.answer(cache_time=60)
    parcel_id = call.data
    print(call.data)
    print("Попало в хендлер получить")
    await state.update_data(parcel_id_out=parcel_id)
    data = await state.get_data()
    # post_num = data['num']
    r = list(filter(lambda x: x['id'] == parcel_id, data['choose_out_result']))
    if r:
        num = r[0]['num']
        await state.update_data(parcel_num=num)
        # await state.update_data(choose_out_result=None)
    else:
        print("НЕ нашел")
        return await state.finish()
    parcel_res = parcel_debt(parcel_id, call.from_user.first_name)
    print(parcel_res)
    if parcel_res is True:
        await call.message.answer(hbold("Посилка оплачена"))
        token_receiver = get_token_receiver(parcel_id)
        await state.update_data(token_receiver=token_receiver)
        print(data)
        # await call.message.answer(f"{parcel_debt(parcel_id, call.from_user.first_name)}")
        await call.message.answer(
            hbold(
                "На Ваш мобільний телефон буде відправлено СMC з кодом варіфікації введіть його в телеграм"
            ))
        await ParcelTake.Take3.set()
    else:
        data = await state.get_data()
        parcel_num = data['parcel_num']
        amount = parcel_res['result']['Total']
        get_data = get_payment_data(parcel_num, amount)
        print(get_data)
        split_pay = get_data['split_pay']
        shipment_uid = get_data['shipment_uid']
        # pay_type = get_data['type']
        description = get_data['description']
        total_amount = my_parcel_debt(shipment_uid)
        total_to_pay = total_amount['Total']
        pay_link_out = pay_by_portmone_my_parcels(parcel_num, total_to_pay,
                                                  split_pay, shipment_uid,
                                                  description)
        print(pay_link_out)
        await state.update_data(pay_link_in=pay_link_out)  # Раскоментить
        pay_button = types.InlineKeyboardMarkup(row_width=2)
        pay_button.add(
            types.InlineKeyboardButton(text=f"💸 Оплатити {amount} грн",
                                       callback_data="pay_out",
                                       url=pay_link_out))
        pay_button.add(
            types.InlineKeyboardButton(text="Підтверджую оплату",
                                       callback_data="payment_confirm_out"))
        # pay_button.add(types.InlineKeyboardButton(text="До головного меню", callback_data="Cancel3"))
        # await call.message.delete()
        await call.message.edit_reply_markup(reply_markup=pay_button)
        await ParcelTake.Take2.set()
示例#15
0
async def template_edit_category_dish_add_handler(call: types.CallbackQuery,
                                                  state: FSMContext, *args,
                                                  **kwargs):
    await ChangeTemplate.dish_name.set()
    dish_name = (await state.get_data("dish_name")).get("dish_name")
    if dish_name:
        await call.message.edit_text(
            hbold(f"Введите название блюда (текущее:{dish_name})"))
    else:
        await call.message.edit_text(hbold(f"Введите название блюда"))
示例#16
0
async def check_test(message: types.Message):
    # Extract test info
    test_info = message.text.split('*')
    test_code = test_info[0]
    answers = test_info[1].lower()

    test = db.get_test(test_code)
    if not test:
        await message.answer(
            'Xatolik!\nTest bazadan topilmadi.\nTest kodini noto`g`ri yuborgan bo`lishingiz mumkin, iltimos tekshirib '
            'qaytadan yuboring. '
        )
        return
    if test[5]:
        await message.answer(
            'Xatolik!\nTest yakunlangan!'
        )
        return
    if db.user_passed_test(message.from_user.id, test_code):
        await message.answer(
            '❗️❗️❗Siz oldinroq bu testga javob yuborgansiz.\nBitta testga faqat bir marta javob yuborish mumkin!'
        )
        return
    if test[4] != len(answers):
        await message.answer(f"Xatolik! Testlar soni {test[4]} ta bo'lishi kerak!")
        return

    correct_answers = calc_correct_answers(answers, test[2])
    ratio = correct_answers / test[4]
    db.add_test_result(test_code, message.from_user.id, answers, correct_answers)

    user = db.get_user(message.from_user.id)
    await message.answer(text(
        text(hbold(f'👤Foydalanuvchi: '), hcode(f'{user[1]}\n')),
        f'📚 Fan: {test[1]}',
        text(f'📖 Test kodi: ', hbold(test_code)),
        f'✏ Jami savollar soni: {test[4]} ta',
        f"✅ To'g'ri javoblar soni: {correct_answers} ta",
        f'🔣 Foiz: {ratio:.1%}\n',
        f'🕐 Sana, vaqt: {datetime.now().strftime(config.DATETIME_FORMAT)}',
        sep='\n'
    ))

    # Notify test author about passage of his test
    test_author = test[3]

    markup = InlineKeyboardMarkup()
    markup.add(InlineKeyboardButton('Joriy holat', callback_data=f'status*{test[1]}*{test_code}*{test[4]}'))
    markup.add(InlineKeyboardButton('Yakunlash', callback_data=f'finish*{test[1]}*{test_code}*{test[4]}*{test[2]}'))

    await bot.send_message(
        test_author, f'{user[1]} {test[1]} fanidan {test_code} kodli testning javoblarini yubordi',
        reply_markup=markup
    )
示例#17
0
async def template_edit_category_add_price_handler(message: types.Message,
                                                   state: FSMContext, *args,
                                                   **kwargs):
    await ChangeTemplate.dish_price.set()
    dish_describe = message.text
    await state.update_data({"dish_describe": dish_describe})
    dish_price = (await state.get_data("dish_price")).get("dish_price")
    if dish_price:
        await message.answer(
            hbold(f"Введите цену блюда (текущая:{dish_price})"))
    else:
        await message.answer(hbold("Введите цену блюда"))
示例#18
0
async def help_message(message: types.Message):
    await message.answer(
        text(hbold('1️⃣ Test yaratish uchun\n'),
             hcode("+test*Fan nomi*to'g'ri javoblar\n"),
             "ko`rinishida yuboring\n",
             hbold("Misol:"),
             hcode("+test*Kimyo*abbccabd...\n"),
             hbold('2️⃣ Test javoblarini yuborish uchun\n'),
             hcode("test kodi*abbcbccdd...\n"),
             "kabi ko`rinishlarda yuboring.\n",
             hbold("Misol:"),
             hcode("1234*abbcabcdd...\n"),
             sep='\n'))
示例#19
0
async def template_edit_category_add_describe_handler(message: types.Message,
                                                      state: FSMContext, *args,
                                                      **kwargs):
    await ChangeTemplate.dish_describe.set()
    dish_name = message.text
    await state.update_data({"dish_name": dish_name})
    dish_describe = (await
                     state.get_data("dish_describe")).get("dish_describe")
    if dish_describe:
        await message.answer(hbold(f"Описание блюда (текущее:{dish_describe})")
                             )
    else:
        await message.answer(hbold("Описание блюда"))
示例#20
0
async def enter_hard_test(message: types.Message, state: FSMContext):
    # получаем все данные
    data = await state.get_data()

    # пишем их в переменные
    answer_first = data.get("answer1")
    answer_second = data.get("answer2")
    answer_third = data.get("answer3")
    answer_fourth = data.get("answer4")
    answer_5th = data.get("answer5")
    answer_6th = data.get("answer6")
    answer_7th = data.get("answer7")
    answer_8th = data.get("answer8")
    answer_9th = data.get("answer9")
    answer_10th = data.get("answer10")
    answer_11th = data.get("answer11")
    answer_12th = data.get("answer12")
    answer_13th = data.get("answer13")
    answer_14th = data.get("answer14")
    answer_15th = data.get("answer15")
    ListAnswersFromUserHardLevel = [
        answer_first, answer_second, answer_third, answer_fourth, answer_5th,
        answer_6th, answer_7th, answer_8th, answer_9th, answer_10th,
        answer_11th, answer_12th, answer_13th, answer_14th, answer_15th
    ]

    # Обнуляем рейтинг
    db.update_rating_hard(message.from_user.id, 0)

    result_str = ""
    for i in range(0, len(ListAnswersFromUserHardLevel)):
        if re.search(ListPatternsRegexHardLevel[i],
                     str(ListAnswersFromUserHardLevel[i]),
                     re.IGNORECASE) is not None:
            result_str += hbold(f'Вопрос {i + 1}') + hbold(
                ' - Правильный ответ!') + "\n\n"
            # postgresql : rate = await db.get_rating_hard(id=message.from_user.id, name=message.from_user.full_name)
            rate = db.get_rating_hard(id=message.from_user.id)
            # postgresql :  await db.update_rating_hard(id=message.from_user.id, rating=rate + 6.0)
            db.update_rating_hard(id=message.from_user.id, rating=rate + 6.0)
        else:
            result_str += hitalic(f'Вопрос {i + 1}') + hbold(
                ' - Неправильный ответ!\n') + hitalic(
                    f'Корректным ответом будет: \n') + hbold(
                        f'{ListCorrectAnswersHardLevel[i]}') + "\n\n"
    await message.answer(text="Ваши ответы:\n\n" + result_str)

    await message.answer(text="Хотите увидеть свой рейтинг?",
                         reply_markup=YesOrNoFinishKeyboard)
    await YesOrNoFinishShowRating.Q1.set()
示例#21
0
async def help(message: types.Message):
    """Хендлер на команду /help
    Выводит список комманд."""

    # Отправляем список комманд
    await message.answer(
        "{header1}"
        "\n"
        "/start - Начать диалог со мной"
        "\n"
        "/help - Помощь по комманде"
        "\n"
        "\n"
        "{header2}"
        "\n"
        "/ro - Выставить RO пользователю"
        "\n"
        "/unro - Убрать RO у пользователя"
        "\n"
        "/ban - Забанить пользователя"
        "\n"
        "/unban - Разбанить пользователя"
        "\n"
        "\n"
        "{header3}"
        "\n"
        "/set_photo - Изменить фотку"
        "\n"
        "/set_title - Изменить название"
        "\n"
        "/set_description - Изменить описание"
        "\n"
        "\n"
        "{header4}"
        "\n"
        "/gay [цель*] -  Тест на гея"
        "\n"
        "/biba - Проверить бибу"
        "\n"
        "/roll - Случайное число"
        "\n"
        "\n"
        "{warning}".format(header1=hbold("Основные комманды"),
                           header2=hbold("Администрирование"),
                           header3=hbold("Работа с группой"),
                           header4=hbold("Другие комманды"),
                           warning=hbold(
                               "В группах функционал бота может отличаться.\n"
                               "* - необязательный аргумент")))
示例#22
0
async def admin_menu_template_change_handler(message, state: FSMContext, *args,
                                             **kwargs):
    template_name = (await
                     state.get_data("template_name")).get("template_name")
    template_id = (await state.get_data("template_id")).get("template_id")
    if isinstance(message, types.CallbackQuery):
        await message.message.edit_text(
            text=hbold(f"Редактирование шаблона {template_name}"),
            reply_markup=get_template_category_keyboard(
                template_name, template_id))
    else:
        await message.answer(
            text=hbold(f"Редактирование шаблона {template_name}"),
            reply_markup=get_template_category_keyboard(
                template_name, template_id))
示例#23
0
async def cod_amount(message: types.Message, state: FSMContext):
    print(message.text)
    amount_cod = message.text
    if re.match(
            r'^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1][0]{4})$',
            amount_cod):
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(
            types.InlineKeyboardButton("До головного меню",
                                       callback_data="Cancel3"))
        await message.answer(hbold(
            "Введіть, будь ласка, номер банківської картки для повернення післяплати"
        ),
                             reply_markup=keyboard)
        await state.update_data(amount_cod=amount_cod)
        await ParcelCreate.get_res_card_num.set()
        print("подходит")
    else:
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(
            types.InlineKeyboardButton("До головного меню",
                                       callback_data="Cancel3"))
        return await message.answer(
            "Сума післяплати не може дорівнювати 0 або бути більшою за 10000, та мати літери у своєму складі\n"
            "Повторіть ввод, або поверніться до головного меню",
            reply_markup=keyboard)
示例#24
0
async def show_menu_parcel_size(message: types.Message, state: FSMContext):
    await state.update_data(res_poshtomat_num=message.text)
    chat_id = message.from_user.id
    res_post_num = poshtomat_num_to_id(message.text)
    if res_post_num is False:
        await bot.send_sticker(
            chat_id,
            r"CAACAgIAAxkBAAEBV_hfY3oxV-wJjpmg-gY-tQ8vKTEPHgACCwADnP4yMPctMM3hxWgtGwQ"
        )
        return await bot.send_message(
            chat_id,
            f"Поштомат отримувача під номером {message.text} не існує\n"
            "Спробуйте ще раз 👇, або скористайтесь пошуком поштоматів")
    keyboard = types.InlineKeyboardMarkup()
    keyboard.add(
        types.InlineKeyboardButton(text="До головного меню",
                                   callback_data="Cancel3")
    )  # Разобраться с надписью "Оберіть дію з поштоматом"
    result = "\n".join(branch_search(message.text))
    await message.answer(f"{result}",
                         parse_mode=types.ParseMode.HTML,
                         disable_web_page_preview=True)
    await state.update_data(re_post_num=res_post_num)
    await message.answer(hbold("Введіть прізвище та ім'я отримувача "),
                         reply_markup=keyboard)
    await ParcelCreate.get_res_fio.set()
示例#25
0
async def sender(message: types.Message, state: FSMContext):
    chat_id = message.from_user.id
    sender_post_num = poshtomat_num_to_id(message.text)
    if sender_post_num is False:
        await bot.send_sticker(
            chat_id,
            r"CAACAgIAAxkBAAEBV_hfY3oxV-wJjpmg-gY-tQ8vKTEPHgACCwADnP4yMPctMM3hxWgtGwQ"
        )
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(
            types.InlineKeyboardButton(text="Відмінити дію",
                                       callback_data="Cancel3"))
        await message.answer(text='Оберіть дію з меню', reply_markup=keyboard)
        return await bot.send_message(
            chat_id, f"Поштомат під номером {message.text} не існує\n"
            "Спробуйте ще раз 👇")
    await state.update_data(sender_poshtomat_num=message.text)
    keyboard = types.InlineKeyboardMarkup()
    keyboard.add(
        types.InlineKeyboardButton(text="Пошук поштомату отримувача",
                                   callback_data="by_rec_address"))
    keyboard.add(
        types.InlineKeyboardButton(text="До головного меню",
                                   callback_data="Cancel3"))
    # await message.answer('Оберіть дію з поштоматом 👇', reply_markup=keyboard)
    result = "\n".join(branch_search(message.text))
    await message.answer(f"{result}",
                         parse_mode=types.ParseMode.HTML,
                         disable_web_page_preview=True)
    await state.update_data(sender_post_id=sender_post_num)
    await message.answer(hbold(
        "Введіть номер поштомату отримувача,\nчи проведіть пошук поштомату"),
                         reply_markup=keyboard)
    await ParcelCreate.get_res_br_num.set()
示例#26
0
async def greetings(message: types.Message):
    await message.reply(fmt.text(
        fmt.text("Привет."),
        fmt.text("Я чат бот, призванный помочь управлять чатом."),
        fmt.text("Введи", fmt.hbold('/help,'), "чтобы получить список команд"),
        sep="\n"),
                        parse_mode="HTML")
示例#27
0
async def inform(message: types.Message):
    await message.reply(fmt.text(
        fmt.text("Чат бот для упрощения работы с группами"),
        fmt.text(fmt.hbold("Powered by eiwisid")),
        fmt.text(fmt.hitalic('est.2021')),
        sep='\n'),
                        parse_mode='HTML')
示例#28
0
async def variants_formatting(message: types.Message):
    await message.answer(hbold('hbold'))
    await message.answer(hcode('hcode'))
    await message.answer(hitalic('hitalic'))
    await message.answer(hunderline('hunderline'))
    await message.answer(hstrikethrough('hstrikethrough'))
    await message.answer(hpre('hpre'))
示例#29
0
async def template_edit_category_add_photo_handler(message: types.Message,
                                                   state: FSMContext, *args,
                                                   **kwargs):
    await ChangeTemplate.dish_photo.set()
    dish_price = message.text
    await state.update_data({"dish_price": dish_price})
    await message.answer(hbold("Отправте фото"))
示例#30
0
async def search_by_geo(call: CallbackQuery):
    await call.message.delete()
    await call.message.answer(
        hbold("Для пошуку найближчих поштоматів поділіться своєю локацією"),
        parse_mode=types.ParseMode.HTML,
        reply_markup=location_kb)
    await Menu.Search_br_by_location.set()