안녕하세요! 깜뭉이입니다.
얼마전에 파이썬으로 디스코드 만들기 리뉴얼 공지를 올렸습니다.
현재 디스코드 봇 만들기 글은 조금 간단하게 적혀 있는 감이 있어서 조금 더 사람들에게 쉽게 재밌게 알려드리고자 리뉴얼 예정이라는 공지를 올렸습니다.
07편 AWS로 24시간 봇 돌리기 같은 경우에는 잘못하면 과금 폭탄 맞을 수 있는 여지가 있기 때문에 빼고, 06편까지 작성할 예정입니다. 해당 주제는 2편으로 나누어 연재 될 예정입니다.
그럼 시작하죠!
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)란 뭘까요?
응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다라고 백과사전에 적혀있습니다. 쉽게 말하면 기능을 쉽게 사용할 수 게 만든 도구라고 할 수 있을 것 같네요.
저는 Riot Games 에서 제공하는 League of Legend API를 사용할 예정입니다.
op.gg 와 같은 전적 사이트들이 소환자 정보나, 매칭 정보를 불러오는 API입니다.
준비물
우선, Requests라는 패키지가 필요합니다. 아래 명령어를 터미널에 입력해서 패키지를 설치해줍시다.
pip install requests |
이후 Riot Games 계정이 필요합니다. LOL 아이디가 있으시면 충분합니다. Riot Develop Potal에 접속합니다.
https://developer.riotgames.com/ |
위 화면으로 오면 몇가지를 알려 드리도록 하겠습니다.
개발 키는 누구나 받을 수 있고 사용할 수 있습니다.
따라서 해당 키를 복사해서 가져옵니다. 키는 약 24시간 마다 만료되며, 새롭게 재생성 해야합니다.
또한 1초에 20개의 요청, 2분동안 100개의 요청 제한을 가지고 있습니다.
개인적으로 항상 유지되는 키를 가지고 싶다면, REGISTER PRODUCT을 통해 신청하여야 합니다.
시작하기
새롭게 riot.py 로 파일을 생성한 후, 아래와 같이 코드를 입력합니다.
import requests
API_KEY = getKey.GET_TOKEN("key.txt")
HEADER = {
"Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Riot-Token": API_KEY,
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
}
API_KEY 부분에는 위에서 복사한 개발 키를 입력해줍니다. 그리고 HEADER를 작성합니다. Request 즉 요청을 하려면 무엇을 요청할 것인지, 어떻게 응답을 받을 것인지를 알려주면 좋겠죠? requset할때 함께 보내줄 HEADER를 작성합니다. 다른 건 굳이 적지 않으셔도 무방하지만 "X-Riot-Token" 값은 꼭 넣어주셔야 합니다.
그럼 소환사 정보를 가져오는 함수를 만들어 보겠습니다. HEADER 아래에 아래와 같이 작성해 보세요.
def get_SummonerId(summonerName):
url = f"https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/{summonerName}"
req = requests.get(url=url, headers=HEADER)
print(req.status_code)
if req.status_code == 200:
print(req.json())
else:
print(req.status_code)
get_SummonerId("Hide on bush")
URL은 Riot Developer Potal에서 APIS 탭에서 SUMMONER-V4라는 항목에 들어가시면 확인 할 수 있습니다. 그 외에도, LEAGUE-V4는 랭크 티어나 승패 정보 등을 가져올 수 있는 등 다양한 API를 지원합니다. 위 함수에서는 소환사 정보를 가져오기 때문에 해당 URL을 사용합니다. 만약 북미라면 kr.api.riotgames에서 kr을 us로 변경하시면 됩니다. 일반적으로 https://kr.api.riotgames.com 해당 항목은 공통적으로 사용하기 때문에 따로 변수로 저장하시면 편리합니다.
여기서 항상 중요한 키는 'id' 입니다. 소환사명으로 알게된 id 값을 통해 랭크 정보를 출력해 봅시다.
아래는 솔로 랭크 정보를 불러오는 함수입니다.
def get_RankInfo(summonerID):
url = f"{MAIN_URL}/lol/league/v4/entries/by-summoner/{summonerID}"
req = requests.get(url=url, headers=HEADER)
if req.status_code == 200:
leagues = req.json()
if len(leagues) == 0:
return None
for league in leagues:
if league["queueType"] == "RANKED_SOLO_5x5":
return league
return None
else
print(req.status_code)
print(get_RankInfo("TmJuG-D9jie2Bwla9jea52xBR2iOehTE-dTWnZaKm0qSHQ"))
MAIN_URL 은 https://kr.api.riotgames.com 가 담겨 있습니다.
랭크 정보를 불러오면 leagues에는 솔로랭크, 자유랭크, TFT랭크 정보가 담겨있습니다. 만약 랭크 게임을 하지 않았더라면 해당 랭크 정보는 없습니다. 따라서 if len(leagues) == 0: 이면 None으로 return해줍니다. 아니라면 for문과 if league["queueType"] == "RANKED_SOLO_5x5" 통해 솔로랭크 정보를 찾아서 가져옵니다. 만약 솔로 랭크를 한 적 있다면 retrun league로 아래와 같은 정보가 터미널에 출력 됩니다.
이렇게 이번에는 Riot API를 사용하여 League of Legend 게임의 유저정보와 랭크정보를 불러오는 방법을 알아 보았습니다. 다음엔 해당 정보를 통해 활용하는 방법을 알아보도록 하겠습니다. 사실 이전 연재 글을 통하여 잘 따라 오신 분들은 먼저 기능을 구현할 수 도 있을거라 생각합니다.
'Project > Make a Discord Bot with Python' 카테고리의 다른 글
파이썬으로 디스코드 봇 만들기 .05 - 이벤트 활용하기. (40) | 2020.06.02 |
---|---|
파이썬으로 디스코드 봇 만들기 .04 - Embed 활용하기. (8) | 2020.04.20 |
파이썬으로 디스코드 봇 만들기 .03 - 명령어 만들기 (17) | 2020.02.11 |
파이썬으로 디스코드 봇 만들기 .02 - 튜토리얼 (62) | 2020.02.11 |
파이썬으로 디스코드 봇 만들기 .01 - 준비하기 (15) | 2020.02.11 |
삽질의 기록과 일상을 남기는 블로그입니다. 주로 React Native를 다룹니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!