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)
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))
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 'Необходимо заполнить доходы и расходы'
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)
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)
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()
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()
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)
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" "* - необязательный аргумент")))
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))
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)
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)
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)
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()
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"Введите название блюда"))
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 )
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("Введите цену блюда"))
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'))
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("Описание блюда"))
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()
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" "* - необязательный аргумент")))
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))
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)
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()
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()
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")
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')
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'))
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("Отправте фото"))
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()