환경
Python 3.7.x
순서
1. Python 설치
2. 디스코드에서 본인의 앱 생성 및 봇 추가
아래 URL로 디스코드에 접속
https://discordapp.com/developers/applications/
Discord Developer Portal — API Docs for Bots and Developers
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
discordapp.com
로그인을 하자.
만약 아이디가 없다면 (없진 않겠지만..) 가입하기 버튼을 클릭해서 아이디를 만들자.
New Application 버튼을 클릭하자. (TestBot2는 제가 이전에 만들어던 앱 이름...)
앱 이름을 입력하자. (저는 로아봇이라고 했습니다.)
앱이 만들어지고, CLIENT ID를 복사해 놓으세요.
오른쪽 상단의 메뉴를 클릭해서 Bot 메뉴를 선택 합니다.
Add Bot 버튼을 클릭하여 앱에 봇을 추가 합니다.
추가 할꺼냐고 물어보는데 Yes, do it! 버튼을 클릭하세요
봇이 만들어졌습니다. TOKEN 을 복사해서 따로 저장해 둡니다.
3. Python 코딩
라이브러리를 추가 해 줍니다.
원도우키+R 버튼을 클릭하여 cmd 실행
cmd 창에서 "pip install 모듈명" 으로 모듈 설치
위와 같은 방식으로 모듈 설치
pip install discord
pip install asyncio
pip install websockets
pip install aiohttp
하나씩 설치도 되지만, 아래처럼 모듈을 한번에 적어서 설치도 가능합니다.
pip install discord asyncio websockets aiohttp
웹페이지 크롤링을 위해 아래 모듈 2개도 설치 합니다.
pip install requests beautifulsoup4
설치한 파이썬 프로그램을 실행하고 코딩을 위해 새로운 파일을 열어줍니다. File > New File
창이 새롭게 열립니다. 여기에다 코딩을 하시면 됩니다.
아래 내용을 복사하여 새롭게 열린 창에 붙여넣기 해줍니다.
import asyncio
import discord
from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib import parse
client = discord.Client()
# 디스코드에서 생성된 토큰을 여기에 추가
token = "디스코드에서생성한토큰"
# 아래는 봇이 구동되었을 때 동작하는 부분
@client.event
async def on_ready():
print("Logged in as ") #봇의 아이디, 닉네임이 출력
print(client.user.name)
print(client.user.id)
# 봇이 새로운 메시지를 수신했을때 동작하는 부분
@client.event
async def on_message(message):
# 아래는 로스트 아크 홈페이지에서 아이디로 페이지를 읽어 레벨을 가져오는 부분
url = "https://lostark.game.onstove.com/Profile/Character/"+parse.quote(message.content[1:])
print (url) # 로그 성 출력
html = urlopen(url)
bsObject = BeautifulSoup(html, "html.parser")
#tmpContent = bsObject.find_all(class_='level-info__item')
tmpContent = bsObject.find_all("div", {"class":"level-info__item"})[0].find_all("span")[1].text
print(tmpContent) # 로그성 출력
if message.author.bot: #봇이 메세지를 보냈다면..
return None #걍 무시.
id = message.author.id #id라는 변수에 메시지를 보낸사람의 ID를 저장.
channel = message.channel #channel이라는 변수에는 메시지를 받은 채널의 ID를 담습니다.
if message.content.startswith('!안녕'): #만약 해당 메시지가 '!안녕' 으로 시작하는 경우에는
#await client.send_message(channel, '안녕') #봇은 해당 채널에 '안녕' 이 라고 말합니다.
await channel.send('안녕')
else: #위의 if문에 해당되지 않는 경우
# 로스트 아크 홈페이지 웹크롤링 한 부분을 출력
await channel.send("<@"+str(message.author.id)+"> : 레벨\""+message.content[1:]+"\""+str(tmpContent))
client.run(token)
코딩한 창에서 F5를 누르면 아래와 같이 프로그램이 실행됩니다.
4. 봇을 서버에 추가하고 실제 테스트
https://discordapp.com/oauth2/authorize?client_id=봇클라이언트아이디&scope=bot
위 URL을 입력하면 아래와 같이 화면이 표시 됩니다. 서버를 선택하고 "승인" 버튼 클릭
선택한 서버에 들어가면 봇이 추가된 걸 확인할 수 있습니다.
로스트아크의 아이디로 레벨을 가져오나 테스트 해 봅니다.
명령어 : !아이디 -> ex) !111
111이라는 아이디를 가지고 있는 분이 계시네요. 레벨은 562.22 라고 봇이 대답해줍니다.
'개발 > python' 카테고리의 다른 글
[Python] 윈도우 Python 설치 (0) | 2021.01.18 |
---|
댓글