sleepylapis
대표칭호 없음
sleepylapis b50c05ef88e04e8db496ad93cb9ea996
이번 강좌에서는 추가 인자를 가지는 명령어를 구현해볼거에요!
이번 강좌에서는 아래의 사전지식들이 필요합니다!
- 파이썬의 조건문 (if ~ elif ~ else)
- 파이썬의 문자열과 str.split() 함수
- 파이썬의 리스트와 list.append() 함수
- 파이썬의 데코레이터
- 3강에서 설명드렸던 discord.py 챗봇의 기본 코드 구조
- 4강에서 설명드렸던 on_message 이벤트
4강에서 작성했던 on_message() 코드블럭에 아래 코드를 새로 작성해볼게요. 이 명령어는 !더해줘 (숫자1) (숫자2) ...
처럼 명령어 뒤에 숫자를 입력해주면, 총합을 채팅으로 알려주는 명령어에요.
if message.content.startswith("!더해줘"): params_str = message.content.split(' ') params = [] for param_str in params_str: if param_str.isdigit(): params.append(int(param_str)) result = 0 for param in params: result += param await message.channel.send("계산 결과는 {result} 입니다.".format(result=result))
- on_message 이벤트 함수의 인자로 넘어오는 discord.Message의 객체인 message에서, 해당 메세지의 텍스트에 접근하기 위해서는 message.content를 사용해 접근해요. on_message 이벤트를 사용해 명령어를 구현하면, 띄어쓰기로 구분한 명령어의 인자들이 따로따로 넘어오지 않고 message.content에 하나의 문자열로 저장되요. 그렇기에, str.split() 등으로 문자열을 잘라서 각 인자들을 구분해야 해요.
- 위 예시에서는
!더해줘 1 2 3
이라는 문자열을["!더해줘", "1", "2", "3"]
으로 나누고, 리스트 안의 각각의 항목에 대해 숫자인지 str.isdigit() 함수로 확인해 숫자인 인자들만 더해서 결과값을 메세지로 알려줘요.
PatrickKR
2020.05.11sleepylapis
2020.05.12와 감사합니다! :D
PatrickKR
2020.05.12xD 앞으로도 많은 글 부탁드립니다!
sleepylapis
2020.05.12열심히 쓸게요!