파이썬으로 트위치 로봇을 만들어보자!
이 강좌는 누구를 위해 편찬한 것입니까?
초보자와 경험이 있는 프로그래머의 새로운 Python.
카탈로그
계정 설정, 기밀 확보 및 소프트웨어 설치부터 시작합니다.그리고 우리는 로봇을 설정하고 인코딩할 것이다.이 강좌가 끝날 때, 사용자 정의 명령을 추가할 준비가 되어 있어야 합니다.
하지만 우선...우리는 우리의 증명서가 질서정연하도록 확보해야 한다.👏
종이, 제발!
📢
RealStreamer69
😎 Request an oauth code . 프로그램에 로그인하고 권한을 부여해야만 생성할 수 있습니다.
Register your app with Twitch dev 클라이언트 id 요청(Twitch API 인터페이스 가능)
💡 PROTIP™ -- Keep it secret. Keep it safe.
모든 물건을 설치해라!🧹
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 runsbot.py
. So, inside this venv, we have acess (on an instance-basis) to these variables. We're going to use python'sos
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__":
오류가 있으면 계속하기 전에 다음 절을 보십시오.
오류: 깨울 수 없습니다.[살려주세요]
wild
pipenv run python bot.py
가 나타납니다.니가 써.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
@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.env
와pipfile
.만약 네가 좋아한다면, 나도 서류를 올렸다github repo.
축하합니다!!🥳🎉
너는 이미 이렇게 멀리 갔다.너는 그것이 무엇을 의미하는지 아니?축하clicking this GitKraken referral link를 하고 등록하면 free socks (아니면 테슬라?😎).
이 밖에 수시로 우리가 본 강좌를 개발한 곳을 보십시오.채팅 중에 합작한 모든 사람에게 소리를 질러라!
너는 다음에 무엇을 하고 싶니?
문제댓글?생각다음 댓글로 알려주세요!
나는 곧 이 글을 따라가서 트위치 IO 라이브러리를 최대한 활용하는 기교를 제공할 것이다. 더 많은 것은 좋은 문서 기록이 없고 해결해야 할 문제이다. 예를 들어 작가를 어떻게 얻는지, 휘장을 사용하여 권한을 얻는지 등이다.
Reference
이 문제에 관하여(파이썬으로 트위치 로봇을 만들어보자!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ninjabunny9000/let-s-make-a-twitch-bot-with-python-2nd8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)