nextcordでスクリーンショットを撮ってくれるbotを作る

2022/02/25に公開

※この記事はT-taku氏が作ったのをplaywrightバージョンに書き換えたものです。

今回完成させるもの

Discordでサイトのスクリーンショットを撮ってくれるbotを作る。

こちらの記事にあるのをplaywrightバージョンに書き換えよう。

環境

  • centos7
  • Python3.9
  • nextcord v2.0.0a8
  • playwright

pipのインストール

pip3 install nextcord playwright

セットアップ

playwrightのセットアップをしよう

playwright install

実装

import nextcord
from os import getenv
from playwright.async_api import async_playwright

client = nextcord.Client()

@client.event
async def on_ready():
    print("login")
    print(client.user.name)
    print(client.user.id)

@client.slash_command(description="スクリーンショットを撮ります")
async def ss(interaction, url: str = nextcord.SlashOption(description="URLをここに", required=True)):
    await interaction.response.defer()
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto(url)
        data = await page.screenshot(path="image.png")
        await browser.close()
        embed = nextcord.Embed(title="スクリーンショット")
        embed.set_image(url='attachment://image.png')
        await interaction.followup.send(file=nextcord.File("image.png"), embed=embed)

client.run("token")

結果

result

感想

多分seleniumより速いし、いいと思う

GitHubで編集を提案

Discussion