반응형
목차
이번에는 봇이 랜덤으로 라인, 룬, 아이템, 챔피언을 추천해주는 기능을 만들 것입니다.
lol.py
lol.py라는 python 파일을 만듭니다.
라인, 룬, 아이템, 챔피언들이 있는 리스트들을 만들어줍니다.
lanes = ['탑', '정글', '미드', '봇', '서포터']
keystones = ['집중 공격', '치명적 속도', '기민한 발놀림' ...]
items = ['돌풍', '크라켄 학살자', '불멸의 철갑궁', ...]
champions = ['가렌', '갈리오', '갱플랭크', '그라가스', '그레이브즈', ...]
-- 2022/03/27
https://howbeautifulworld.tistory.com/83 에 챔피언, 아이템 룬 정보를 갖고 오는 글을 썼습니다.
리스트에 값들을 조금만 적고 글을 차례대로 가는 것을 추천합니다.
미리 위 글을 보고 와서 해도 될 듯합니다.
리스트에서 랜덤한 값을 얻을 것이기 때문에 random을 import 합니다.
import random
결과를 받아오는 getResult라는 함수를 만듭니다.
'$롤 라인 룬 아이템 챔피언' -- 이런 식으로 명령어를 입력해서 결과를 받아올 것이기 때문에 text를 공백을 기준으로 나누어 words 안에 담아줍니다.
word가 '라인'이면 index는 0부터 위에서 선언한 lanes 리스트의 길이 - 1까지 랜덤한 수가 되고 result
딕셔너리의 '라인'의 값은 lanes[index]가 됩니다.
이렇게 for문이 끝나면 result 딕셔너리를 반환합니다.
def getResult(text):
words = text.split()
result = {"라인": '', "룬": '', "아이템": '', '챔피언': ''}
for word in words:
if word == "라인":
index = random.randrange(0, len(lanes))
result["라인"] = lanes[index]
elif word == "룬":
index = random.randrange(0, len(keystones))
result["룬"] = keystones[index]
elif word == "아이템":
index = random.randrange(0, len(items))
result["아이템"] = items[index]
elif word == "챔피언":
index = random.randrange(0, len(champions))
result["챔피언"] = champions[index]
return result
main.py
다시 main.py로 돌아와서
아까 만든 모듈을 불러옵니다.
import lol
명령어는 롤,
result에 결과를 받아옵니다.
message에 key와 value를 더해주고 보냅니다.
@bot.command(name='롤')
async def random_lol(ctx, *, text=''):
message = ''
result = lol.getResult(text)
for key, value in result.items():
if value != '':
message += key + ' : ' + value + '\n'
await ctx.send(message)
결과
실행을 해보면
잘 나옵니다.
라인, 룬, 아이템, 챔피언 중 일부도 가능하며
순서가 바뀌어도 가능합니다.
전체 코드
main.py
더보기
import discord
from discord.ext import commands
import lol
bot = commands.Bot(command_prefix='$') # 접두사가 '$'
@bot.event
async def on_ready():
print('We have logged in as {0.user}'.format(bot))
@bot.command()
async def hello(ctx): # '$hello'라는 메시지를 보냈을 때 @이름 Hello!를 보내줌
await ctx.send('{0.author.mention} Hello!'.format(ctx))
@bot.command(name='롤')
async def random_lol(ctx, *, text=''):
message = ''
result = lol.getResult(text)
for key, value in result.items():
if value != '':
message += key + ' : ' + value + '\n'
await ctx.send(message)
bot.run('token') # 이곳에 본인 토큰
lol.py
더보기
# lol.py
import random
lanes = ['탑', '정글', '미드', '봇', '서포터']
keystones = ['집중 공격', '치명적 속도', '기민한 발놀림' ...]
items = ['돌풍', '크라켄 학살자', '불멸의 철갑궁', ...]
champions = ['가렌', '갈리오', '갱플랭크', '그라가스', '그레이브즈', ...]
def getResult(text):
words = text.split()
result = {"라인": '', "룬": '', "아이템": '', '챔피언': ''}
for word in words:
if word == "라인":
index = random.randrange(0, len(lanes))
result["라인"] = lanes[index]
elif word == "룬":
index = random.randrange(0, len(keystones))
result["룬"] = keystones[index]
elif word == "아이템":
index = random.randrange(0, len(items))
result["아이템"] = items[index]
elif word == "챔피언":
index = random.randrange(0, len(champions))
result["챔피언"] = champions[index]
return result
4번 글로 이어집니다.
반응형
'프로젝트 > 디스코드 봇' 카테고리의 다른 글
[Python] #3-1 디스코드 봇 만들기 - 여러 명 추천 (0) | 2022.03.26 |
---|---|
[Python] #4 디스코드 봇 만들기 - Embed (4) | 2021.07.11 |
[Python] #2 디스코드 봇 만들기 - 명령어 (0) | 2021.07.10 |
[Python] #1 디스코드 봇 만들기 - 봇 생성 (0) | 2021.07.06 |
[Python] #0 디스코드 봇 만들기 - 소개 및 준비 (0) | 2021.07.05 |
댓글