어차피, 집에 있으니까 Discord로 (사이트) 스크린 샷 기능 봇 만들자!

안녕하세요! T-taku라고합니다. 코로나에서 어쨌든 여가 시간에 기사를 쓰기로 결정했습니다! 조금 만나십시오 ...

약간의 여담



h tps : // / s r r p. 코 m / 오 th2 / 어쩌지? c페인t_이d=476012428170362880&페르미시온 s=2147347828&s코페=보트
이 봇은 내 T-taku가 운영하는 것입니다. 스크린 샷 명령이 무엇인지 확인하고 싶습니다!

이번에 완성시키는 것



Discord로 사이트의 스크린 샷을 제공하는 봇을 만드십시오!
주의 : Discord.py 입문편이 아닙니다. 계정 생성에 대한 자세한 내용은 다음 기사를 참조하세요. 여기

환경


  • Windows 10 (실제로 실행되는 환경에서는 Linux-Ubuntu)
  • Python 3.7
  • discord.py 1.3.3
  • Chromedriver 80.0
  • Google 크롬 80.0.3987.149

  • 조속히 만들어 가자!



    이번에는 Windows10을 전제로 만들어 갑니다. 또한 Google 크롬도 들어 있다고 전제로 진행하고 있습니다.

    Chromedriver 배포



    여기에서 환경에 있던 ChromeDriver를 배포하십시오. 올바른 버전을 입력하지 않으면 오류가 발생하므로주의하십시오!

    pip 설정


    pip install discord.py pillow chromedriver chromedriver-binary selenium
    

    구현



    바로 구현하자! 우선 스크린 샷 부분입니다.
    
    from PIL import Image
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    Web="https://yahoo.co.jp"
    FILENAME = "screen.png"
    options=Options()
    options.set_headless(True)
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('start-maximized')
    options.add_argument('disable-infobarse')
    options.add_argument('--disable-extensions')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.binary_location="Chromeがあるとこ"
    driver=webdriver.Chrome(chrome_options=options,executable_path=r"Chrome driverの場所")
    driver.get(web)
    driver.set_window_size(1280, 720)
    driver.save_screenshot(FILENAME)
    driver.quit()
    

    Discord로 보내기



    최소한 움직이게 되어 있습니다. (어쩌면 ...)
    import discord
    from discord.ext import commands
    from PIL import Image
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    bot = commands.Bot(command_prefix='!',activity=d.Activity(name='起動中!',type=d.ActivityType.watching))
    
    @bot.event
    async def on_ready():
        #ログイン
        print('Login infomation>>>')
        print(bot.user.name)
        print(bot.user.id)
        print('------')
    
    @bot.event
    async def on_message(message):
        ctx = await bot.get_context(message)#ctxをとる
        if message.author.bot:
            return #Botには反応しない
        await bot.invoke(ctx)
    
    @bot.command()
    async def ss(ctx,web):
        try:
            FILENAME = "screen.png"
            options=Options()
            options.set_headless(True)
            options.add_argument('--disable-dev-shm-usage')
            options.add_argument('start-maximized')
            options.add_argument('disable-infobarse')
            options.add_argument('--disable-extensions')
            options.add_argument('--disable-gpu')
            options.add_argument('--no-sandbox')
            options.binary_location="Chromeがある場所"
            driver=webdriver.Chrome(chrome_options = options,executable_path=r"Chromeドライバーがある場所")
            if not "http" in str(web):
                try:
                    driver.get("http://"+str(web))
                except:
                    driver.get("https://"+str(web))
            else:
                driver.get(str(web))
            if 'IP addres' in driver.page_source:
                await ctx.send("このWebページにはアクセスできません。")
            else:
                driver.set_window_size(1280, 720)
                driver.save_screenshot('screenshot.png')
                file = discord.File("screenshot.png", filename="image.png")
                embed = d.Embed(title="スクリーンショット", description=f"{web}")
                embed.set_image(url="attachment://image.png")
                await ctx.send(file=file,embed=embed)
                driver.quit()
        except:
            await ctx.send("エラーが発生していたため、アクセスができませんでした。")
    bot.run("TOKEN HERE")
    

    이상



    어땠습니까? 조금 난이도가 높은 기사를 만들어 보았습니다. 여러분도 자신의 봇에 추가해보세요!

    기사의 시작 부분에서도 말했지만, 내 봇을 추가해 주면 기사 작성, 봇 개발의 격려가되기 때문에, 잘 부탁드립니다! :
    htps : ///ss r이다 p. 코 m / 오 th2 / 어쨌든? c페인t_이d=476012428170362880&페르미시온 s=2147347828&s코페=보트

    도움이되면 LGTM을 주면 더 기뻐할 것입니다!

    그러면!

    좋은 웹페이지 즐겨찾기