본문 바로가기

개발일지/디스코드 봇

디스코드 봇 개발 일지 2024-02-25 - 코드 리팩토링 + command aliases

 

※ 작성자가 작성한 내용이 일부 틀릴 수도 있음 주의

 

※ 직접 하면서 알게된 것을 모두 써서 사족이 많음

 

※ 리빙 포인트) 리팩토링은 염원이자 닿을 수 없는 미래다

 

인턴이 끝났다

 

채용 연계 인턴은 아니라서 되게 짧기는 했는데

 

그래도 배운 것도 많았고 돈도 받아서 기분이 좋다.

 

같이 일했던 분도 업무하시면서 (요약하자면)

 

'아 리팩토링 해야하는데'

 

라는 말씀을 많이 하셨다.

 

새 학기 시작 전이고, 그런김에 좀 배운 것을 바탕으로

 

모듈 단위로 좀 파일도 나누어서 코드 짜기에 더 좋게

 

리팩토링을 해보려고 한다.

 

 

 

글을 쓰는 것이 너무 어려웠다

 

사실 글을 쓰는 데에 너무 막히는 경우가 많았거나

 

한 번에 많은 것을 넣으려다가 글 하나 쓰는 데에 며칠이 걸려서

 

수정에 수정에 수정을 하다보니 피로해지는 것도 있긴 했다

 

그래서 하루에 조금만 진도가 나가더라도 그것만 정리해서

 

올려보려고 한다.

 

 

 

command aliases

 

command 를 사용하여 디스코드에 명령을 내릴 때는

 

이전 글을 읽어봤다면 다음과 같이 표시해야한다는 것을 알고 있을 것이다.

 

# 리팩토링하면서 구성한 코드의 일부이며, 정확한 구조를 알 필요는 없다.
# cordDice는 같은 폴더 상에 구현한 'cordDice.py'를 import한 것이다.
import cordDice

@bot.command()
async def 주사위(message, *vars):
    value = cordDice.process(vars)
    await message.channel.send(value)

 

이런 예시에서 주사위를 사용하고 싶을 때

 

'Dice' 'D' 'd' 등 여러 명령어로 주사위를 굴리고 싶을 수도 있다.

 

굳이 '주사위' 다 치기는 너무 귀찮으니까 말이다.

 

이럴 때 사용하는 것이 aliases다.

 

 

 

 

aliases 사용법

#cordDice.py 의 일부
aliases = ['d', 'dice', 'Dice', 'D']

 

다음과 같이 사용할 명령어를 가졌을 때

 

본래의 코드를 다음과 같이 수정하면 된다.

 

# 리팩토링하면서 구성한 코드의 일부이며, 정확한 구조를 알 필요는 없다.
# cordDice는 같은 폴더 상에 구현한 'cordDice.py'를 import한 것이다.
import cordDice

@bot.command(aliases=cordDice.aliases)
async def 주사위(message, *vars):
    value = cordDice.process(vars)
    await message.channel.send(value)

 

이러면 다른 명령어를 이용해도

 

같은 명령을 수행할 수 있다.

 

아래는 실행 예시이다.

 

내부 함수는 완성하지 않은 상태다.

728x90