Exemple #1
0
async def instagram_stories(message: Message):
    msg_to_delete = await message.reply("downloading")

    stories = re.match(config.ig_video_stories, message.text)

    username = stories.group('username')
    story_id = stories.group('id')

    try:
        meta_info = await downloader.get_user_story(story_id=story_id,
                                                    username=username)
    except (PrivateAccountException, BadResponseException) as ex:
        await message.reply(PrivateAccountException().message)
        await msg_to_delete.delete()
        raise ex

    short_code = meta_info.get('shortcode')
    author = meta_info.get('author')

    name = f'media/{short_code}_ig.jpg'

    if meta_info.get('is_video'):
        # отправляем юзеру данные о фото
        name = f'media/{short_code}_ig.mp4'
        await message.reply_video(InputFile(path_or_bytesio=name),
                                  caption=f'{author} \n\n' + "downloadedwith")
    else:
        await message.reply_photo(InputFile(path_or_bytesio=name),
                                  caption=f'{author} \n\n' + "downloadedwith")

    await msg_to_delete.delete()
Exemple #2
0
async def send_track(chat_id, track):
    try:
        stream = await track.download()
        thumb = await track.get_thumb()
        if thumb:
            thumb = BytesIO(thumb)
        filename = f"{track.artist} - {track.title}.mp3".replace('/', '_')
    except ValueError:
        await bot.send_message(
            chat_id, "🚫This track is not available "
            f"({track.artist} - {track.title})")
        raise

    await bot.send_chat_action(chat_id, 'upload_audio')
    msg = await bot.send_audio(chat_id=-1001246220493,
                               audio=InputFile(stream, filename=filename),
                               thumb=InputFile(thumb, filename='thumb.jpg'),
                               performer=track.artist,
                               title=track.title,
                               duration=track.duration)

    file_id = msg.audio.file_id
    await db_utils.add_vk_track(track.full_id, file_id)
    await bot.send_audio(chat_id, file_id)
    var.downloading.pop(track.full_id, None)
    var.vk_tracks.pop(track.full_id, None)
Exemple #3
0
async def send_pdf_file(msg):
    await msg.reply('Обрабатываю...')
    out_file_name = 'out_data/out{}.pdf'.format(msg.chat.id)

    if db_models.Url.objects(url=msg.text).count() > 0:
        urlobj = db_models.Url.objects.get(url=msg.text)
    else:
        urlobj = db_models.Url(url=msg.text)

    urlobj.amount += 1
    urlobj.save()

    try:
        url_downloader.download_url_weasyprint(msg.text, out_file_name)
        await bot.send_document(msg.chat.id, InputFile(out_file_name))
    except Exception as e:
        logging.critical("Weasyprint didn't convert. Trying weasyprint")
        try:
            url_downloader.download_url_wkhtmltopdf(msg.text, out_file_name)
            await bot.send_document(msg.chat.id, InputFile(out_file_name))
        except Exception as e:
            await bot.send_message(
                msg.chat.id,
                'Не вышло:( Попробуйте еще раз или сообщите разработчику о проблеме'
            )
            raise e
async def customization_ascii(call: CallbackQuery):
    await call.answer(cache_time=3)
    username = call.from_user.username
    await call.message.edit_text('Wait some seconds...')

    # Customization for default ascii
    output = ascii_magic.from_image_file(f'docs/{username}/picture.png', columns=129, mode=ascii_magic.Modes.ASCII)

    with open(f'docs/{username}/ascii.txt', "w") as f:
        f.write(output)

    # txt to to png
    imgkit.from_file(f'docs/{username}/ascii.txt', f'docs/{username}/ascii.png')

    await call.message.edit_text('Done! Sending ...')

    size_b = os.path.getsize(f'docs/{username}/ascii.png')  # Size of screenshot in bytes
    size_mb = size_b / 1_000_000  # Size of screenshot in mb

    if size_mb < 10:  # restriction of Telegram. Image can't be more than 10mb
        await call.message.answer_photo(InputFile(path_or_bytesio=f'docs/{username}/ascii.png'))
        await call.message.answer_document(InputFile(f'docs/{username}/ascii.png'))
        await call.message.answer_document(InputFile(f'docs/{username}/ascii.txt'))
    else:
        await call.message.answer('So big size of photo. Sending only photo-file...')
        await call.message.answer_document(InputFile(f'docs/{username}/ascii.png'))
        await call.message.answer_document(InputFile(f'docs/{username}/ascii.txt'))

    await call.message.delete()
    shutil.rmtree(f'docs/{username}/')  # Removing dir with user files
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 default_html(call: CallbackQuery):
    """Converting image to html, and taking screenshot of html page"""
    await call.answer(cache_time=3)
    username = call.from_user.username

    await call.message.edit_text('Wait some seconds...')
    output = ascii_magic.from_image_file(
        f'docs/{username}/picture.png',
        columns=1000,
        mode=ascii_magic.Modes.HTML)  # Customization for default html doc
    ascii_magic.to_html_file(f'docs/{username}/ascii.html',
                             output)  # Reversing from image to html

    imgkit.from_file(f'docs/{username}/ascii.html',
                     f'docs/{username}/html.png')  # Screenshot from html page
    ###########################################################################################
    #                                      Cropping Image                                     #
    image = Image.open(f'docs/{username}/html.png')
    width, height = image.size

    # Cropping coordinates
    left = 8
    top = 16
    right = width
    bottom = height - top

    # Cropped image of above dimension
    im = image.crop((left, top, right, bottom))
    # Shows the image in image viewer
    im.save(f'docs/{username}/html.png')
    ###########################################################################################

    size_b = os.path.getsize(
        f'docs/{username}/html.png')  # Size of screenshot in bytes
    size_mb = size_b / 1_000_000  # Size of screenshot in mb

    await call.message.edit_text('Done! Sending ...')

    if size_mb < 10:  # restriction of Telegram. Image can't be more than 10mb
        await call.message.answer_photo(
            InputFile(path_or_bytesio=f'docs/{username}/html.png'))
        await call.message.answer_document(
            InputFile(f'docs/{username}/html.png'))
        await call.message.answer_document(
            InputFile(f'docs/{username}/ascii.html'))
    else:
        await call.message.answer(
            'So big size of photo. Sending only photo-document...')
        await call.message.answer_document(
            InputFile(f'docs/{username}/html.png'))
        await call.message.answer_document(
            InputFile(f'docs/{username}/ascii.html'))

    await call.message.delete()
    shutil.rmtree(f'docs/{username}/')  # Removing dir with user files7
Exemple #7
0
def task_scheduler():
    while True:
        if not task_queue.empty():
            task = task_queue.get()

            if task['type'] == 'nst':

                subprocess.run(
                    f'python3 bot/Algos/vanila_nst/main.py eval --content-image {task["content_path"]} --style-image {task["content_path"]} --model bot/Algos/vanila_nst/models/21styles.model --content-size 256 --style-size 256 --cuda=0',
                    shell=True)

                photo = InputFile(path_or_bytesio='output.jpg')  # fix
            elif task['type'] == 'gan':
                chosen_model = task['model']
                shutil.move(
                    'data/img1.jpg',
                    'bot/Algos/cyclegan/datasets/test_root/testA/img1.jpg')
                shutil.move(
                    'data/img2.jpg',
                    'bot/Algos/cyclegan/datasets/test_root/testB/img2.jpg')

                ########

                if chosen_model == 'summer_to_winter':
                    link = '1tbYQNGBW3zrBZTl2Om3_IEN2tmvA1rmF'
                    # скачиваем образ1
                elif chosen_model == 'vangogh':
                    link = '1_PVn400veyxwPWfdQLlE3K9PzHxS3VxI'
                elif chosen_model == 'monet':
                    link = '1ix3sZzC1zKsvv1S3xihqHqKypqwHyrI9'

                ##########

                gdd.download_file_from_google_drive(
                    file_id=link,
                    dest_path='bot/Algos/cyclegan/checkpoints/model.ckpt',
                    showsize=True)

                os.chdir('bot/Algos/cyclegan')

                subprocess.run(
                    'python3 main.py --testing True --dataset_dir datasets/test_root --checkpoint_dir checkpoints '
                    '--gpu_ids -1 --crop_height 500 --crop_width 500 --idt_coef 0.1 --checkpoint checkpoints/model.ckpt',
                    shell=True)
                photo = InputFile(path_or_bytesio='results/sample.jpg')  # fix

                os.chdir('../../..')

            send_fut = asyncio.run_coroutine_threadsafe(
                send_photo(task['message'], photo), loop)
            send_fut.result()

            task_queue.task_done()
        asyncio.sleep(2)
Exemple #8
0
async def book_buttons(call: types.CallbackQuery):
    try:
        if call.data == BUTTONS_BOOK[0]:
            await call.answer(text=SHORT_INFO, show_alert=True)
        elif call.data == BUTTONS_BOOK[1]:
            await call.answer()
            try:
                photos = [
                    InputFile("content/kotor.png"),
                    InputFile("content/map.png"),
                    InputFile("content/perast.png"),
                    InputFile("content/zmajevic.png")
                ]
                await call.message.answer("Moć dizajna ↓")
                for i in photos:
                    await bot.send_document(document=i,
                                            chat_id=call.message.chat.id)
            except FileNotFoundError as fe:
                await call.message.answer("Не получилось найти изображения")
                print(f"[ERROR]: {fe}")
        elif call.data == BUTTONS_BOOK[2]:
            buttons = [
                types.InlineKeyboardButton(text=BUTTONS_NAVIGATION[i],
                                           callback_data=BUTTONS_NAVIGATION[i])
                for i in range(len(BUTTONS_NAVIGATION))
            ]
            keyboard = types.InlineKeyboardMarkup(row_width=1)
            keyboard.add(*buttons)
            await call.answer()
            await call.message.answer(
                "Узнайте, где в книге найти данные темы: ↓",
                reply_markup=keyboard)
        elif call.data == BUTTONS_BOOK[3]:
            buttons = ["🔙"
                       ] + [str(i) for i in range(1,
                                                  len(BUTTONS_CITIES) + 1)]
            keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True,
                                                 row_width=5)
            keyboard.add(*buttons)
            await call.answer()
            await call.message.answer("\n".join([
                str(i + 1) + ") " + list(BUTTONS_CITIES)[i]
                for i in range(len(BUTTONS_CITIES))
            ]))
            await call.message.answer(
                "Выберите город/достопримечательность на клавиатуре ↓",
                reply_markup=keyboard)
    except IndexError as ie:  # Если забыли изменить код после редактирования кол-ва кнопок
        await call.message.answer(
            "Нет доступа к этой части!\nПопробуйте позже.")
        await call.answer()
        print(f"[ERROR]: {ie}")
Exemple #9
0
async def send_track(chat_id, track, Redownload=False):
    quality = await db_utils.get_quality_setting(chat_id)
    if not already_downloading(track.id):
        var.downloading[track.id] = int(time())
    else:
        return
    if not Redownload:
        file_id = await db_utils.get_track(track.id, quality)
        if file_id:
            await bot.send_audio(chat_id, file_id)
            var.downloading.pop(track.id)
            sent_message_logger.info(
                f'[send track {track.id} to {chat_id}] {track}')
            return True

    try:
        if quality == 'mp3':
            path = await track.download('MP3_320')
        elif quality == 'flac':
            path = await track.download('FLAC')
        asyncio.create_task(delete_later(path))
    except ValueError as e:
        print(e)
        await bot.send_message(
            chat_id,
            ("🚫This track is not available "
             f"({track.artist.name} - {track.title})"))
        raise

    await bot.send_chat_action(chat_id, 'upload_audio')

    thumb = await track.get_thumb()
    if os.path.getsize(path) >> 20 < 49:
        msg = await bot.send_audio(
            chat_id=-1001246220493, audio=InputFile(path),
            thumb=InputFile(thumb), performer=track.artist.name,
            title=track.title, duration=track.duration)
        file_id = msg.audio.file_id
        await db_utils.add_track(track.id, file_id, quality)
    else:
        file_id = await post_large_track(path, track, quality, thumb=thumb)

    await bot.send_audio(chat_id, file_id)
    shutil.rmtree(path.rsplit('/', 1)[0])
    var.downloading.pop(track.id)
    sent_message_logger.info(
        f'[send track {track.id} to {chat_id}] {track}')
    return True
Exemple #10
0
async def test_photo(msg: Message):
    photo = msg.photo[-1]
    file = BytesIO()
    await photo.download(destination=file)

    cropped_img_file: BytesIO = await get_drawn_img(file)
    await msg.answer_photo(InputFile(cropped_img_file))
Exemple #11
0
async def consumer(queue):
	while True:
		if not task_thread.has_task:
			_id = await queue.get()
			LOG.info(f"received {_id}")

			try:
				state = dp.current_state(user=_id)

				try:
					is_success = await do_task(_id, state)
				except Exception as e:
					LOG.critical(f"task exception: {e}")
					is_success = False

				if is_success:
					await bot.send_photo(_id, InputFile(PATH.RESULT_PATH), caption="Готово!")
				else:
					await bot.send_message(_id, "Что-то пошло не так, попробуйте заново")

				await state.finish()
			except Exception as e:
				LOG.critical(f"consumer exception: {e}")

			queue.task_done()
		else:
			await asyncio.sleep(2)
Exemple #12
0
async def gotovka_catalog(call: CallbackQuery):
    photo3 = InputFile(path_or_bytesio="photos/credit_image/credit1.jpg")
    await call.message.reply_photo(
        photo=photo3,
        caption=
        ("<b>Ваша Готивочка</b> - <i>Главной составляющей системы </i>\n"
         "<i>кредитования 'Ваша Готівочка' является удобство! </i>\n"
         "<i>Мы предлагаем простые и понятные условия займа.</i>\n"
         "<a href='https://rozetka.com.ua'>Подробнее</a>👈\n\n"
         "<b>Условия:</b>\n"
         "• Сумма займа: от 200 до 9000 грн.\n"
         "• Время рассмотрения заявки – 15 мин.\n"
         "• Без справки о доходах\n\n"
         "<b>Преимущества.</b>\n"
         "не просим клиента ксерокопию документов или фото документов\n"
         "не просим клиента фото с паспортом или банковской картой\n"
         "не просим клиента указывать аккаунт в социальной сети\n"
         "не просим у клиента справку о доходах\n"
         "не просим клиента телефон родственника\n\n"
         "<b>Требование к заёмщику:</b>\n"
         "• Возраст: от 18 до 60 лет\n"
         "• Гражданство Украины\n"
         "• наличие банковской карты (для перечисления кредитных средств) и мобильного телефона"
         ),
        reply_markup=there_menu)
Exemple #13
0
def get_separated_imgs(img_file: BytesIO, start, middle, end) -> tuple:
    img: Image.Image = Image.open(img_file)

    for param in (start, middle, end):
        if param > img.size[1] or param < 0:
            return None, None

    word_img_file, transl_img_file = BytesIO(), BytesIO()

    img.crop((0, start, img.size[0], middle)).save(word_img_file, format="png")
    img.crop((0, middle, img.size[0], end)).save(transl_img_file, format="png")

    word_img_file.seek(0)
    transl_img_file.seek(0)

    return InputFile(word_img_file), InputFile(transl_img_file)
Exemple #14
0
async def offer_docx(call: CallbackQuery, state: FSMContext):
    async with state.proxy() as data:
        message = data['message']

    await bot.send_chat_action(message.from_user.id,
                               ChatActions.UPLOAD_DOCUMENT)

    order = {}
    async with state.proxy() as data:
        order.update(data)
        message = data['message']

    date = datetime.today().strftime("%d.%m.%y")
    offer_crate(order)

    msg = 'Прверьте, пожалуйста, документ. Если всё в порядке - ' \
          'Нажмите "В PDF". По необходимости, Вы можете отредактировать' \
          'документ и прислать его сюда!'

    await Stage.Q4.set()
    await bot.send_document(message.from_user.id,
                            InputFile(f'КП_от_{date}.docx'))

    await bot.send_message(
        message.from_user.id,
        text=msg,
        reply_markup=kb.pdf,
    )
Exemple #15
0
async def imageHandler(message):
    res = str(db.findResult(message.from_user.id))
    print(res)
    if (
            res
    ):  # далее идёт псевдо агрегация по результатам теста для выявления профессии
        if (res[4] == '2' and res[7] == '2'):
            res = professions[0]
        elif (res[1] == '1' and res[4] == '1'):
            res = professions[1]
        elif (res[2] == '1' and res[3] == '1'):
            res = professions[2]
        elif (res[3] == '1' and res[6] == '1'):
            res = professions[3]
        else:
            res = professions[4]

        img_path = "users_images/" + str(message.from_user.id) + '.jpg'
        await message.photo[-1].download(img_path
                                         )  # скачиваем картинку пользователя
        print(predict_batch(
            img_path, res))  # отправляем в модель (она создаёт новую картинку)
        await message.answer_photo(
            InputFile(img_path + '_'),
            "Скорее всего в будущем ты будешь:\n" + profBeautiful[res]
        )  # отправляем полученную из модели картинку

    else:
        await message.answer('Рановато кидаешь фотку\nПройди тест!',
                             reply_markup=createInlineMenu([[['Меню',
                                                              'menu']]]))
Exemple #16
0
def video_captcha(lang):
    global fnt
    fnt = ImageFont.truetype(
        '/home/albert/.local/share/fonts/Iosevka Term Nerd Font Complete.ttf',
        60)

    x = randint(50, 100)
    y = randint(50, 100)
    symbol = choice(['-', '+'])
    if symbol == '-':
        z = x - y
    elif symbol == '+':
        z = x + y
    else:
        print('Error')
    td = TemporaryDirectory(dir='.')

    gen_pics(f'{x}', path.join(td.name, '1.png'))
    gen_pics(symbol, path.join(td.name, '2.png'))
    gen_pics(f'{y}', path.join(td.name, '3.png'))
    gen_pics('equal?', path.join(td.name, '4.png'))

    line = f'ffmpeg -hide_banner -loglevel panic -y -r 1 -i {path.join(td.name, "%01d.png")} -c:v libx264 -vf fps=1 -pix_fmt yuv420p out.mp4'
    subprocess.call(line.split(' '))
    input_file = InputFile('out.mp4')
    inline_kb_full = InlineKeyboardMarkup(row_width=3)
    inline_kb_full.row(*[item2btn(i) for i in [7, 8, 9]])
    inline_kb_full.row(*[item2btn(i) for i in [4, 5, 6]])
    inline_kb_full.row(*[item2btn(i) for i in [1, 2, 3]])
    inline_kb_full.row(InlineKeyboardButton('⌫', callback_data='backspace'),
                       item2btn(0))
    btn_pass = [c for c in f'{z}']
    print(btn_pass)
    return (input_file, inline_kb_full, btn_pass)
Exemple #17
0
    async def on_created(self, event):
        event_id, is_video = self.get_event_id(event.src_path)

        if not event_id:
            return

        chat_ids = get_chat_ids()

        if not is_video:
            logger.info(f"New event {event_id}")
            logger.info("Send message")
            await asyncio.wait([
                self.bot.send_message(
                    chat_id, f"Новое уведомление "
                    f"{ZM_URL}/?view=event&eid={event_id}")
                for chat_id in chat_ids
            ])
            return

        while event_id not in self.events:
            await asyncio.sleep(2)

        if len(self.events) > 10:
            asyncio.create_task(self.clear_events())

        logger.info("Send video")

        video = InputFile(event.src_path)

        await asyncio.wait(
            [self.bot.send_video(chat_id, video) for chat_id in chat_ids])
Exemple #18
0
    def _get_document(document: dict) -> Tuple[InputFile, str]:
        content = document.get("content")
        filename = document.get("filename")
        caption = document.get("caption")

        text_file = InputFile(io.StringIO(content), filename=filename)
        return text_file, caption
Exemple #19
0
async def upload_data_to_csv(user_id: int, from_date: date = DEFAULT_DATE, field_names=None) -> Optional[InputFile]:
    if field_names is None:
        field_names = DEFAULT_FIELD_NAMES

    if data := await Finance.get_transactions(user_id=user_id, from_date=from_date):
        output = construct_csv(data, field_names)
        return InputFile(BytesIO(output.encode('utf8')), filename='your_data.csv')
Exemple #20
0
async def bot_start(message: types.Message):
    await message.answer(
        f'Привет, {message.from_user.full_name}!, Введите часть телефонного номера '
        f'как приведено на картинке, для получения информации о телефонной компании и местности'
    )
    photo = InputFile(path_or_bytesio="photos/2.jpg")
    await message.answer_photo(photo=photo)
async def send_track(chat_id, track, Redownload=False):
    quality = await db_utils.get_quality_setting(chat_id)
    if not already_downloading(track.id):
        var.downloading[track.id] = int(time())
    else:
        return
    if not Redownload:
        file_id = await db_utils.get_track(track.id, quality)
        if file_id:
            await bot.send_audio(chat_id, file_id)
            var.downloading.pop(track.id)
            sent_message_logger.info(
                f'[send track {track.id} to {chat_id}] {track}')
            return True

    try:
        if quality == 'mp3':
            track_file = await track.download('MP3_320')
        elif quality == 'flac':
            track_file = await track.download('FLAC')
        filename = f"{track.artist.name} - {track.title}.{quality}".replace(
            '/', '_')
    except ValueError as e:
        print(e)
        await bot.send_message(chat_id,
                               ("🚫This track is not available "
                                f"({track.artist.name} - {track.title})"))
        raise

    await bot.send_chat_action(chat_id, 'upload_audio')

    thumb = await track.get_thumb()
    if thumb:
        thumb = BytesIO(thumb)
    msg = await bot.send_audio(chat_id=-1001246220493,
                               audio=InputFile(track_file, filename=filename),
                               thumb=InputFile(thumb, filename='thumb.jpg'),
                               performer=track.artist.name,
                               title=track.title,
                               duration=track.duration)
    file_id = msg.audio.file_id
    await db_utils.add_track(track.id, file_id, quality)

    await bot.send_audio(chat_id, file_id)
    var.downloading.pop(track.id)
    sent_message_logger.info(f'[send track {track.id} to {chat_id}] {track}')
    return True
Exemple #22
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Карасиков.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Карасиков Евгений\n'
                         'Программный директор\n'
                         'Номер телефона: +7(961)590-31-22\n'
                         'Инстаграм: https://instagram.com/karas_i_ko\n'
                         'Вконтакте: https://vk.com/karas_i_ko')
Exemple #23
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Деркач-Инна.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Деркач Инна\n'
                         'Куратор\n'
                         'Номер телефона: +7(999)637-22-60\n'
                         'Инстаграм: https://instagram.com/innochkaderkach\n'
                         'Вконтакте: https://vk.com/id153602793')
Exemple #24
0
async def finish_download(track, inline_message_id, user):
    file_id = await db_utils.get_track(track.id)
    if file_id:
        return await bot.edit_message_media(
            media=types.InputMediaAudio(media=file_id,
                                        title=track.title,
                                        performer=track.artist.name,
                                        duration=track.duration),
            inline_message_id=inline_message_id)
    try:
        track_file = await track.download()
        thumb = await track.get_thumb()
        if thumb:
            thumb = BytesIO(thumb)
        filename = f"{track.artist.name} - {track.title}.mp3".replace('/', '_')
    except ValueError:
        return await bot.edit_message_reply_markup(
            inline_message_id=inline_message_id,
            reply_markup=inline_keyboards.download_error_keyboard)
    msg = await bot.send_audio(chat_id=-1001246220493,
                               audio=InputFile(track_file, filename=filename),
                               thumb=InputFile(thumb, filename='thumb.jpg'),
                               performer=track.artist.name,
                               title=track.title,
                               duration=track.duration)
    file_id = msg.audio.file_id
    await db_utils.add_track(track.id, file_id)
    file_id = await db_utils.get_track(track.id)

    try:
        await bot.edit_message_media(media=types.InputMediaAudio(
            media=file_id,
            title=track.title,
            performer=track.artist.name,
            duration=track.duration),
                                     inline_message_id=inline_message_id)
    except exceptions.BadRequest:
        try:
            await bot.send_audio(user.id, file_id)
        except:
            pass

    file_download_logger.info(
        f'[downloaded track {track.id} (inline)] {track}')
    sent_message_logger.info(
        f'[send track {track.id} to {format_name(user)} (inline)] {track}')
Exemple #25
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Аникина.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Аникина Таисия\n'
                         'Старший куратор\n'
                         'Номер телефона: +7(918)686-71-78\n'
                         'Инстаграм: instagram.com/taya_burton\n'
                         'Вконтакте: http://vk.com/taya_burton')
Exemple #26
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Шпак.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Шпак Анна\n'
                         'Куратор / Хореограф\n'
                         'Номер телефона: +7(928)847-04-47\n'
                         'Инстаграм: https://instagram.com/_aana_aana_\n'
                         'Вконтакте: https://vk.com/anya_hp')
Exemple #27
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Кляхина.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Кляхина Татьяна\n'
                         'Куратор\n'
                         'Номер телефона: +7(918)231-96-01\n'
                         'Инстаграм: https://www.instagram.com/tataperova/\n'
                         'Вконтакте: http://vk.com/tataperova')
Exemple #28
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Гудко.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Гудко Юлия\n'
                         'Куратор\n'
                         'Номер телефона: +7(913)876-71-61\n'
                         'Инстаграм: https://instagram.com/_gudok\n'
                         'Вконтакте: https://vk.com/ygudko1')
Exemple #29
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Мартиросян.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Мартиросян Армен\n'
                         'Куратор\n'
                         'Номер телефона: +7(918)652-22-27\n'
                         'Инстаграм: instagram.com/armen_mart07\n'
                         'Вконтакте: http://vk.com/armen_mart07')
Exemple #30
0
async def cv_orgs(message: types.Message):
    photo = InputFile(path_or_bytesio='static/cv/Кишинек.png')
    await bot.send_photo(chat_id=message.from_user.id, photo=photo)
    await message.answer(text='Кишинек Илья\n'
                         'Куратор\n'
                         'Номер телефона: +7(918)687-05-81\n'
                         'Инстаграм: instagram.com/_kishinek_\n'
                         'Вконтакте: vk.com/kishinek')