⛳
discord.py(最新)でスクリーンショットを撮ってくれるbotを作る
※この記事はT-taku氏が作ったのをplaywrightバージョンに書き換えたものです。
今回完成させるもの
Discordでサイトのスクリーンショットを撮ってくれるbotを作る。
こちらの記事にあるのをplaywrightバージョンに書き換えよう。
環境
- Ubuntu(Windowsでもいい)
- Python3.10
- discord.py v2.0.0
- playwright
pipのインストール
pip3 install playwright
pip3 install discord.py
セットアップ
playwrightのセットアップをしよう
playwright install chromium
playwright install-deps chromium
実装
import discord
from discord import app_commands
from playwright.async_api import async_playwright
client = discord.Client()
tree = app_commands.CommandTree()
@client.event
async def on_ready():
print("login")
print(client.user.name)
print(client.user.id)
# Client側とApi側を同期
await tree.sync()
@tree.command(description="スクリーンショットを撮ります")
@app_commands.describe(url="URLをここに")
async def ss(interaction, url: str):
# 考え中にする
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 = discord.Embed(title="スクリーンショット")
embed.set_image(url='attachment://image.png')
# 送信
await interaction.followup.send(file=discord.File("image.png"), embed=embed)
client.run("token")
結果
感想
多分seleniumより速いし、いいと思う.
Discussion
discord.py v2.0.0がリリースしたので少し書き換えました。