Example #1
0
def get_help_album(caption: str):
    help_album = MediaGroup()
    for img_id in EXAMPLE_IMGS:
        help_album.attach_photo(img_id, caption=caption)
        caption = ""

    return help_album
Example #2
0
async def send_right_answers(message: Message, question: dict):
    response = requests.get("{}/questions/{}/answers".format(
        config.host, question["id"]),
                            params={"where:status": "R"})

    if response.status_code != 200:
        await message.reply(md.bold(
            emojize(
                "К сожалению я пока не знаю ответа на этот вопрос :confused:")
        ),
                            reply=False,
                            parse_mode=ParseMode.MARKDOWN)
    else:
        media_group_content, right_answers_text, ps_message = list(), list(
        ), ""
        title_text, title_photos = (await update_image_sources(
            question["title"], False)).values()
        media_group_content.extend(title_photos)

        answers = response.json()["data"][0]["variants"]
        for answer in answers:
            answer_text, answer_photos = (await update_image_sources(
                answer[-1], False, len(media_group_content))).values()
            right_answers_text.append(
                md.bold(emojize(":white_check_mark:"), answer_text))
            media_group_content.extend(answer_photos)
        if media_group_content:
            ps_message = md.text(
                "\n",
                md.bold("P.S."),
                " Текст может не отображать полной информации из картинок,",
                " поэтому ниже я отправил изображения из теста.",
                sep="")

        await message.reply(md.text(md.text(
            emojize(":nerd_face: Я нашел ответ на вопрос:")),
                                    md.italic(title_text),
                                    *right_answers_text,
                                    ps_message,
                                    sep="\n"),
                            reply=False,
                            parse_mode=ParseMode.MARKDOWN,
                            disable_web_page_preview=True)
        if media_group_content:
            media_group = MediaGroup()
            photos_map = map(lambda mgc: mgc[1], media_group_content)
            names_map = map(lambda mgc: mgc[0], media_group_content)
            media_group.attach_many(*photos_map)
            media_group_messages = await message.reply_media_group(media_group,
                                                                   reply=False)
            for photo_name, photo_message in zip(names_map,
                                                 media_group_messages):
                if (await file_id_storage.get_file_id(photo_name)) is None:
                    await file_id_storage.set_file_id(
                        photo_name, photo_message.photo[-1].file_id)
Example #3
0
async def config_crop_range(msg: Message, state: FSMContext):
    user = msg.from_user
    crop_range_str = msg.text

    if not crop_range_str.replace(
            " ", "").isdecimal() or len(crop_range_str.split(" ")) != 3:
        await msg.answer(
            "Вводить диапазон нужно тремя целыми числами, через пробел 🥴\n"
            "<i>Пример ввода: 300 470 1150</i>")
        return
    elif len(crop_range_str) > 25:
        await msg.answer(
            "Какие-то очень большие размеры для обрезания картинки 🥴\n"
            "На самой первой тестовой картинке отмечены границы высоты зелённой линией."
        )

    crop_range = [int(num) for num in crop_range_str.split(" ")]
    crop_range.sort()

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

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

    word_img, transl_img = await get_separated_imgs(img_file, *crop_range)

    if not word_img:
        await msg.answer(
            "Ты задал(-а) дипазон, который выходит за пределы размера картинки 🥴\n"
            "На картинке с зелённой линией показаны допустимые для тебя значения высоты."
        )
        return

    separated_imgs_album = MediaGroup()
    separated_imgs_album.attach_many(InputMediaPhoto(word_img),
                                     InputMediaPhoto(transl_img))

    await state.update_data(crop_range=crop_range)

    await msg.answer_media_group(separated_imgs_album)
    await msg.answer(
        "Если фотографии обрезалась не корректно, то введи "
        "диапозон высот ещё раз.",
        reply_markup=keyboards.default.create_set_menu)

    logging.info(f"@{user.username}-{user.id} read crop_range {crop_range}")
Example #4
0
async def state_search(message: types.Message):
    albom = MediaGroup()
    text = ""
    name = str(message.text.lower())
    name_kino = await db.select_kino("kinos", name)
    if not name_kino:
        await message.answer("Такого названия нет либо остановите поиск\n/stop"
                             )
    for i in name_kino:
        text += f"<a href='{i[1]}'>{i[0]}</a>\n"
        albom.attach_photo(f"{i[2]}", caption=f"{i[0]} - {i[1]}")
    await message.answer_media_group(media=albom)
    await bot.send_message(chat_id=message.chat.id,
                           text=text,
                           parse_mode="HTML",
                           disable_web_page_preview=True)
Example #5
0
async def show_item(callback: types.CallbackQuery, category, item_id):
    # Get keyboard
    markup = item_keyboard(category, item_id)
    album = MediaGroup()

    # Delete list of items message
    await callback.message.delete()

    # Take a record about our item from the database
    item: Item = await get_item(item_id)
    photos = item.photos

    for photo in photos:
        album.attach_photo(photo)

    await callback.message.answer_media_group(media=album)
    await callback.message.answer(text=f'{item.name}', reply_markup=markup)
async def show_item_command(message: types.Message):
    category: str = items_command[message.text]['category']
    item_id: int = items_command[message.text]['item_id']

    # Get keyboard
    markup = item_keyboard(category, item_id)
    album = MediaGroup()

    # Take a record about our item from the database
    item: Item = await get_item(item_id)
    photos = item.photos

    for photo in photos:
        album.attach_photo(photo)

    await message.answer_media_group(media=album)
    await message.answer(text=f'{item.name}\nЦена: {item.price} руб.', reply_markup=markup)
Example #7
0
async def more_attractions(message: Message):
    albums = MediaGroup()
    url1 = "https://gos.ifrigate.ru/wp-content/uploads/main2.jpg"
    url2 = "http://hotel7nebo.ru/images/page/43.jpg"
    url3 = "https://img.geliophoto.com/rostov/12_rostov.jpg"
    url4 = "https://www.yuga.ru/media/0e/29/pr_budennovskogo_rostov-na-donu_ponomar__iic6nxi.jpg"
    albums.attach_photo(url1)
    albums.attach_photo(url2)
    albums.attach_photo(url3)
    albums.attach_photo(url4)

    await message.answer_media_group(media=albums)
Example #8
0
 async def images(size):
     media = MediaGroup()
     for i, image in enumerate(self.message_obj.media):
         if i < 10:
             media.attach_photo(f'{image[0]}{size}', image[1])
     return media