Найти - Пользователи
Полная версия: Telegram Бот - использование asyncio
Начало » Python для новичков » Telegram Бот - использование asyncio
1
m_xaidar
Ребята, приветствую!
Подскажите пожалуйста, можно ли включить данный код в теллеграм бот?
Если да, не могли бы вы поделиться примером?

Который день ломаю голову

import asyncio
import pyppeteer
import time

async def main():
browser = await pyppeteer.launch()
page = await browser.newPage()
await page.goto('https://google.com')
await page.setViewport(dict(width=1860, height=1085))
time.sleep(1)
await page.screenshot(path=“/Users/MainUser/desktop/screenshot.png”, fullPage=False)
await browser.close()

asyncio.get_event_loop().run_until_complete(main())


p.s. Код открывает сайт, делает скриншот, и сохраняет в виде png.
aiscy
Как-нибудь так:
 from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram.dispatcher import FSMContext
from pyppeteer import launch
from pyppeteer.errors import PyppeteerError, TimeoutError
from tempfile import NamedTemporaryFile
API_TOKEN = 'BOT TOKEN HERE'
bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
class ScreenshotForm(StatesGroup):
    url = State()
@dp.message_handler(commands=['screen'])
async def send_site_screenshot(message: types.Message):
    await ScreenshotForm.url.set()
    await message.reply('Какой адрес у нужной страницы?')
@dp.message_handler(state=ScreenshotForm.url)
async def process_url(message: types.Message, state: FSMContext):
    await message.reply('Минутку...')
    browser = await launch()
    try:
        page = await browser.newPage()
        url = message.text  # TODO Сделать проверку адреса
        await page.goto(url)
        await page.setViewport(viewport=dict(width=1860, height=1085))
        with NamedTemporaryFile() as fp:
            await page.screenshot(path=fp.name, type='jpeg', quality=100, fullPage=False)
            await message.reply_photo(fp.file)
    except (PyppeteerError, TimeoutError) as e:
        await message.reply('Что-то внутри меня умерло :(\n' + str(e))
    finally:
        await state.finish()
        await browser.close()
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
m_xaidar
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB