파이썬으로 트위치 로봇을 만들어보자!

이 강좌는 Twitch 채널에 사용할 간단한 채팅 로봇을 제공합니다.

이 강좌는 누구를 위해 편찬한 것입니까?


초보자와 경험이 있는 프로그래머의 새로운 Python.

카탈로그


계정 설정, 기밀 확보 및 소프트웨어 설치부터 시작합니다.그리고 우리는 로봇을 설정하고 인코딩할 것이다.이 강좌가 끝날 때, 사용자 정의 명령을 추가할 준비가 되어 있어야 합니다.
하지만 우선...우리는 우리의 증명서가 질서정연하도록 확보해야 한다.👏

종이, 제발!


📢

  • Twitch(로봇을 위해)에 계정을 만들거나 흐르는 미디어를 사용합니다.멋있어 보여요. 예를 들면 RealStreamer69😎

  • Request an oauth code . 프로그램에 로그인하고 권한을 부여해야만 생성할 수 있습니다.

  • Register your app with Twitch dev 클라이언트 id 요청(Twitch API 인터페이스 가능)
  • oauth와 클라이언트 id를 편리한 곳에 두지만 공개하지 마십시오.이따가 로봇을 배치해야 합니다.

    💡 PROTIP™ -- Keep it secret. Keep it safe.


    모든 물건을 설치해라!🧹

  • Python 3.6 또는 3.7 설치 -- Windows/Linux/OS X
  • 파이프 NV를 설치합니다.콘솔에서 실행⇒ pip install pipenv
  • 로봇을 위해 편안한 집을 만들다


    가상 환경은 추가 몇 가지 절차를 통해 설정해야 하지만, 이로 인해Python 응용 프로그램을 개발하는 것은 매우 쉽다.이 강좌에서, 우리는 pip와venv를 하나의 가방에 결합시키는 PIPENV를 사용할 것이다.
  • 콘솔에서 작업 디렉토리로 이동
  • 운영⇒ pipenv --python 3.6 또는 pipenv --python 3.7
  • pipfile 이 생성됩니다.파이썬 버전이나 설치된 라이브러리 같은venv 정보를 저장합니다.
  • 다음 실행⇒ piplock
  • bot 구성 및 권한 부여


    작업 디렉토리에 2개의 파일을 생성합니다.하나는 pipenv install twitchio, 다른 하나는 bot.py (파일 이름이 없고 확장자만 있습니다. 이상하다는 것을 알고 있습니다.)

    .환경


    당신의 비밀은 /.env 파일에 저장될 것입니다.파일 .env 뒤에 oauth 영패와 클라이언트 id를 추가합니다.다른 변수를 동시에 기입합니다.
    # .env
    TMI_TOKEN=oauth:
    CLIENT_ID=
    BOT_NICK=
    BOT_PREFIX=!
    CHANNEL=
    

    =

    /bot.py에서 우리가 필요로 하는 라이브러리를 가져오고 다음 단계에서 시작할bot obj를 만듭니다.
    # bot.py
    import os # for importing env vars for the bot to use
    from twitchio.ext import commands
    
    bot = commands.Bot(
        # set up the bot
        irc_token=os.environ['TMI_TOKEN'],
        client_id=os.environ['CLIENT_ID'],
        nick=os.environ['BOT_NICK'],
        prefix=os.environ['BOT_PREFIX'],
        initial_channels=[os.environ['CHANNEL']]
    )
    

    💡 PROTIP™ -- When we run bot.py using PIPENV, it first loads the variables from the .env file into the virtual environment and then runs bot.py. So, inside this venv, we have acess (on an instance-basis) to these variables. We're going to use python's os module to import them, just like we would import environment variables on our native environment.


    파일의 밑부분에서, 우리가 직접 bot.py 호출 bot.py 을 사용할 때bot가 실행되는지 확인해야 합니다
    # bot.py
    if __name__ == "__main__":
        bot.run()
    

    로봇을 깨워라 (로봇 내부를 깨워라!)


    로봇이 Twitch에 연결될 수 있도록 테스트해 봅시다.
  • 콘솔에서 실행⇒ if __name__ == "__main__":
  • 만약 그것이 작동할 수 있다면, 당신은 어떠한 오류도 얻지 못할 것이다. - 이것은 환경 변수가 정확하게 불러온다는 것을 의미한다. 당신의 로봇이 Twitch에 성공적으로 연결되었다는 것을 의미한다.
    오류가 있으면 계속하기 전에 다음 절을 보십시오.

    오류: 깨울 수 없습니다.[살려주세요]


    wildpipenv run python bot.py가 나타납니다.니가 써.
  • 에 정확한 영패(oauth와 클라이언트 id)가 있는지 확인합니다.env 파일이며 Request to join the channel has timed out. Make sure the channel exists.
  • 과 같은 디렉터리/폴더에 있습니다.

  • 이 때 디렉터리 구조는 다음과 같아야 합니다...
    working-directory/
    ├─ .env
    ├─ bot.py
    ├─ Pipfile
    └─ Pipfile.lock
    
  • If that still doesn't fix it, comment below and we'll sort it out for ya!

  • bot에 기능 추가

    채팅방에 오신 걸 환영합니다!

    Back to bot.py.... Below the bot object, let's create a function called event_ready with the decorator @bot.event. This function will run once when we start the bot. It then reports to terminal and chat that it successfully connected to Twitch.

    # bot.py, below bot object
    @bot.event
    async def event_ready():
        'Called once when the bot goes online.'
        print(f"{os.environ['BOT_NICK']} is online!")
        ws = bot._ws  # this is only needed to send messages within event_ready
        await ws.send_privmsg(os.environ['CHANNEL'], f"/me has landed!")
    
    계속, 로봇 다시 테스트.그것이 지금 접속되었을 때, 그것은 채팅을 환영해야 한다.

    채팅 중 메시지


    다음은 채널에서 메시지를 보낼 때마다 실행되는 함수를 추가합니다.잠시 후 당신은 여기에 각종 논리를 추가할 수 있지만, 우리는 로봇이 자신을 소홀히 하는 것을 확보하는 것부터 시작할 것입니다.
    # bot.py, below event_ready
    @bot.event
    async def event_message(ctx):
        'Runs every time a message is sent in chat.'
    
        # make sure the bot ignores itself and the streamer
        if ctx.author.name.lower() == os.environ['BOT_NICK'].lower():
            return
    
    그 후에, 우리는 한 줄의 코드를 삽입할 것이다. 이 코드들은 채팅에서 보내는 모든 메시지를 짜증나게 보여 줄 것이다.ᴷᵃᵖᵖᵃ
    # bot.py, in event_message, below the bot-ignoring stuff
    await ctx.channel.send(ctx.content)
    
    로봇을 다시 가동하고 검사하세요!

    💡 PROTIP™ -- Comment out that line now cuz it's actually really annoying.


    채팅 명령을 내리다


    모든 명령을 정의할 때 이 형식을 따라야 합니다.
  • 장유bot.py
  • 은 비동기 함수로 그 이름은decorator
  • @bot.command(name='whatever') 변수와 일치한다
  • 함수
  • 를 통해 메시지 상하문에 전송
    함수가 어떻게 작동하는지, 그리고 무엇을 하는지는 당신에게 달려 있습니다.이 예에서, 우리는 name라는 명령을 만들 것입니다. 명령을 호출할 때, 채팅에 표시됩니다 !test.
    # bot.py, below event_message function
    @bot.command(name='test')
    async def test(ctx):
        await ctx.send('test passed!')
    
    이 작업이 가능하기 전에, 우리는 로봇이 그 명령을 감청하는 방법을 알고 있는지 확인해야 한다.
    로봇 프로그램 코드를 무시한 채 test passed! 에 추가합니다.
        #bot.py, in event_message, below the bot ignore stuffs
        await bot.handle_commands(ctx)
    
    그래테스트할 때가 됐어.로봇을 리셋하고 채팅으로 보내기event_message!

    특정 메시지에 응답


    Tell my bot I said... "Hello."


    당신도 채팅 중의 특정 메시지에 답장할 수 있습니다. 반드시 !test는 아닙니다.사람들이 인사할 때 안녕이라고 말하는 코드를 작성합시다.
        # bot.py, at the bottom of event_message
        if 'hello' in ctx.content.lower():
            await ctx.channel.send(f"Hi, @{ctx.author.name}!")
    
    테스트를 계속하자!bot을 구축하고 명령을 추가하는 프레임워크가 이미 있습니다.

    이게 네가 다 하고 먹어야 할 음식이야.


    !명령


    import os
    from twitchio.ext import commands
    
    # set up the bot
    bot = commands.Bot(
        irc_token=os.environ['TMI_TOKEN'],
        client_id=os.environ['CLIENT_ID'],
        nick=os.environ['BOT_NICK'],
        prefix=os.environ['BOT_PREFIX'],
        initial_channels=[os.environ['CHANNEL']]
    )
    
    @bot.event
    async def event_ready():
        'Called once when the bot goes online.'
        print(f"{os.environ['BOT_NICK']} is online!")
        ws = bot._ws  # this is only needed to send messages within event_ready
        await ws.send_privmsg(os.environ['CHANNEL'], f"/me has landed!")
    
    
    @bot.event
    async def event_message(ctx):
        'Runs every time a message is sent in chat.'
    
        # make sure the bot ignores itself and the streamer
        if ctx.author.name.lower() == os.environ['BOT_NICK'].lower():
            return
    
        await bot.handle_commands(ctx)
    
        # await ctx.channel.send(ctx.content)
    
        if 'hello' in ctx.content.lower():
            await ctx.channel.send(f"Hi, @{ctx.author.name}!")
    
    
    @bot.command(name='test')
    async def test(ctx):
        await ctx.send('test passed!')
    
    
    if __name__ == "__main__":
        bot.run()
    
    그리고 ofc your/bot.py와 당신의 비밀 및 a.envpipfile.
    만약 네가 좋아한다면, 나도 서류를 올렸다github repo.

    축하합니다!!🥳🎉


    너는 이미 이렇게 멀리 갔다.너는 그것이 무엇을 의미하는지 아니?축하clicking this GitKraken referral link를 하고 등록하면 free socks (아니면 테슬라?😎).
    이 밖에 수시로 우리가 본 강좌를 개발한 곳을 보십시오.채팅 중에 합작한 모든 사람에게 소리를 질러라!

    너는 다음에 무엇을 하고 싶니?


    문제댓글?생각다음 댓글로 알려주세요!
    나는 곧 이 글을 따라가서 트위치 IO 라이브러리를 최대한 활용하는 기교를 제공할 것이다. 더 많은 것은 좋은 문서 기록이 없고 해결해야 할 문제이다. 예를 들어 작가를 어떻게 얻는지, 휘장을 사용하여 권한을 얻는지 등이다.

    좋은 웹페이지 즐겨찾기