AD

채팅/봇 트위치 방송 알림용 디스코드 봇 만들기(2021년 3월ver) 코딩단계

비홀더_
2021-03-05 22:52:09 14594 5 40

자 이제 본격적으로 코딩을 해볼까요?

코딩 전과 코딩중에는 간간히 손목 스트레칭을 해주세…읍읍


우선 영어가 익숙하지 않으신 분들이 많다고 가정하고 Visual Studio를 사용하여 설명해드리겠습니다.


먼저 IDE 프로그램을 실행하면 이렇게 나옵니다.

ea457e4b8babfbc9eb732220c6539d16.png

아래에 보이는 Python 애플리케이션을 선택해주세요(Visual Studio를 설치하실 때 Python도 선택해서 설치해주세요)

0aeeee38e83019078b7f417833ded0af.png

프로젝트 이름과 위치를 지정해주세요

df7ab3a39e041fddf0ca5ccb4d18d7e8.png

짠 만들기를 누르시면 위와 같이 뜰거예요(UI위치는 조금씩 다를수도 있습니다.)

우측에 보이는 솔루션 탐색기는 단순히 생각하면 파일탐색기라고 생각하시면 됩니다.

저기에 보이는 자신이 만든 python 프로그램(저는 Bot_maker.py라고 만들었습니다)을 더블클릭해서 창을 띄워 주세요(아무것도 작성 안되어있을거에요. 만약 뭐 희한한거 작성되어있다 하면 다 지우시면 되요. 튜토리얼 같은거라고 보시면 되서)


프로그램 코드들은 이미 작성되어있는 코드들을 참조해서 돌아가는 경우가 많습니다.(처음부터 하나하나 코딩할려면 매우 긴 코드줄이 필요하기 때문)

그래서 코드의 첫 시작은 보통 이 라이브러리나 모듈들을 불러오는 코드가 있습니다.


import discord

import requests

import asyncio

from json import loads


아래와 같이 불러올겁니다.

우리는 디스코드 봇을 컨트롤할 것이기 때문에 import discord를 해주었고

서버와 통신을 하기 때문에 import requests를 선언해줍니다.

이 프로그램이 너무 빨리 반복되면 컴퓨터에 부담을 많이 주기 때문에 import asyncio

를 선언해줍니다.

서버에서 오는 정보는 json 타입으로 오기 때문에 from json import loads을 선언합니다.

그 다음 우리가 일일이 입력하기 귀찮은 것들 혹은 나중에 바꿔줘야할 수 있는 것들을 변수로 선언해서 먼저 정리해줍니다.


twitch_Client_ID = '자신의 트위치 클라이언트 ID'

twitch_Client_secret = '자신의 트위치 클라이언트 시크릿'

discord_Token = '자신의 디스코드 토큰'


discord_channelID = 방송 알림을 받을 디스코드 채널 ID

discord_bot_state = '디스코드 봇이 하고 있는 것(ex 방송 알리미)'

twitchID = '알림 받고싶은 스트리머의 ID'

ment = '알림에서 사용할 멘트(ex 방송켰으니 놀러와'




위에 변수들에 값을 할당 해야되는데 작은 따옴표’ 든 큰 따옴표든” 안에 작성해주셔야되요

단 디스코드 채널 ID(숫자로만 이루어져있는 유일한 ID)는 따옴표 없이 숫자코드로만 입력해주세요

각 변수에 대한 설명은 써놨습니다.

이제 본격적인 코드들입니다.



client = discord.Client()


@client.event

async def on_ready():

    print(client.user.id)

    print("ready")


    # 디스코드 봇 상태 설정

    game = discord.Game(discord_bot_state)

    await client.change_presence(status=discord.Status.online, activity=game)


    # 채팅 채널 설정

    channel = client.get_channel(discord_channelID)


    # 트위치 api 2차인증

    oauth_key = requests.post("https://id.twitch.tv/oauth2/token?client_id=" + twitch_Client_ID + "&client_secret=" + twitch_Client_secret + "&grant_type=client_credentials")

    access_token = loads(oauth_key.text)["access_token"]

    token_type = 'Bearer '

    authorization = token_type + access_token

    print(authorization)


    check = False     #여기 오류를 수정합니다


    while True:

        print("ready on Notification")


        # 트위치 api에게 방송 정보 요청

        headers = {'client-id': twitch_Client_ID, 'Authorization': authorization}

        response_channel = requests.get('https://api.twitch.tv/helix/streams?user_login=' + twitchID, headers=headers)

        print(response_channel.text)

        # 라이브 상태 체크

        try:

            # 방송 정보에서 'data'에서 'type' 값이 live 이고 체크상태가 false 이면 방송 알림(오프라인이면 방송정보가 공백으로 옴)

            if loads(response_channel.text)['data'][0]['type'] == 'live' and check == False:

                await channel.send(ment +'\n https://www.twitch.tv/' + twitchID)

                print("Online")

                check = True

        except:

            print("Offline")

            check = False


        await asyncio.sleep(30)


client.run(discord_Token)



(초록색 글자는 제가 주석처리로 넣은겁니다. 없어도 상관없어요)
코드들입니다. 파이썬은 줄맞춤과 공백을 잘 맞춰줘야해요(공백과 줄바꿈을 하나의 문법으로 쓰는 갓갓 파이썬)

d074d11e157a53e28e10c445193a19d3.png

17a6c448f719fa3bc511752a0de16d34.png

붙여넣기 하면 위와 같게 나오겠죠(아 참고로 붙여넣기 해도 됩니다. 대신 줄이 어그러지는 경우가 있으니 주의)

와 코딩 다했다~~~ 하고 실행 버튼을 누르시는 분들이 벌써부터 있을 수도 있는데요

가장 중요한 것을 아직 안했어요(어찌보면 이건 코딩하기 전에 먼저 해야되는 거기도 해요)

바로 우리가 처음에 선언했던 discord,requests,asyncio,loads 모듈들을 컴퓨터에 설치를 해줘야되여

윈도우 키를 누르시고 cmd 라고 입력하셔서 명령프롬프트를 열어주세요

f695cef975bf3be43748bb361f60e4c4.png

(저기 base써있는건 신경쓰지 마세요. 전 Anaconda라고 가상환경을 만들어주는 프로그램을 사용해서 저리 나오는거예요.)

여기서 (파이썬을 깔면 pip라는 것도 같이 깔릴거예요)

‘pip install discord’,를 입력해서 discord 모듈을 설치해주세요

마찬가지로 ‘pip install requests’, ‘pip install asyncio’, ’pip install loads’들도 설치해주세요

(가끔 자주쓰는 모듈이라 파이썬을 설치할 때 자동으로 설치되는 모듈들도 있습니다. 그런 모듈들은 Successfully installed 라고 나올거예요)

다 설치하시고 IDE로 돌아오셔서 상단에 디버그탭에서 시작을 누르시면 실행이 됩니다.

(Visual Studio를 하도 안썻더니 환경값이 이상하게 되어있어서 결과값은 pycharm으로 보여드리겠습니다.)

실행하면 이런 창이 뜰겁니다

오프라인일 떄 :

3dcef28df19cd9c716947247f4a254ac.png


온라인일 떄 :

cbda9504a8717f00ada475441d396ab5.png

450fb1281f789eccf3e2eb0fcabbf61f.png

위에 실행값을 보면 아시겠지만 따로 프로그램을 멈추지 않는 이상 계속 돌아가게끔 되어있습니다. 이걸 이후에 작성할 ‘무료 클라우드 컴퓨터 대여하기’를 참고하면 24시간 내내 클라우드에서 돌아가는 봇을 만들 수 있습니다.

만약 오프라인이면 트위치 API가 정보를 주지 않아서 정보값이 없으므로 봇이 알림을 보내지 않습니다.

온라인이면 트위치 API가 정보를 보내주는데 정보값에서 type 값이 live인지를 판단하고(and) 알림을 보냈었는지를 판단(check 변수)하여 만약 알림을 아직 안보냈다면 디코로 저렇게 알림이 갑니다.


궁금하신 점이 있으시면 댓글을 달아주세요. 긴 글을 읽어주셔서 감사합니다.


파이썬 코드파일 공유 : 

https://drive.google.com/file/d/1jrcZ4Z4W2_61U8lEehOm6clgd0K26RKI/view?usp=sharing

받으신 후에 7개의 변수값만 수정하면 됩니다(line6부터 line13까지)


후원댓글 40
댓글 40개  
이전 댓글 더 보기
이 글에 댓글을 달 권한이 없습니다. 로그인해 보세요.
AD
방송하기프로그램채팅/봇업데이트
30
03-23
5
01-08
7
01-07
7
채팅/봇
채팅봇의 궁금증해결 [5]
네오캣짱
06-28
16
04-30
13
채팅/봇
이모티콘 이용 팁 [7]
송감귤
03-29
14
04-28
23
04-04
5
채팅/봇
채팅방 이모티콘 [1]
루하__
01-17
인기글 글 쓰기