개인 자료란 (JE)

  서버 커뮤니티

한국 마인크래프트 포럼

마인크래프트 자료 및 커뮤니티 플랫폼

전체 회원수 122,091명 ( +6명 )

※ 장기간 미활동 회원 제외

Profile sleepylapis 대표칭호 없음

sleepylapis b50c05ef88e04e8db496ad93cb9ea996

Profile

커뮤니티new 개발자란new 개발자 강좌 디스코드

[discord.py] 5강 : 추가 인자를 가지는 명령어 구현해보기 (on_message)

2020.05.08 조회 수 316 추천 수 2

이번 강좌에서는 추가 인자를 가지는 명령어를 구현해볼거에요!

이번 강좌에서는 아래의 사전지식들이 필요합니다!

  • 파이썬의 조건문 (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() 함수로 확인해 숫자인 인자들만 더해서 결과값을 메세지로 알려줘요.

4개의 댓글

sleepylapis
2020.05.12
@PatrickKR

와 감사합니다! :D

PatrickKR
2020.05.12
@sleepylapis

xD 앞으로도 많은 글 부탁드립니다!

sleepylapis
2020.05.12
@PatrickKR

열심히 쓸게요!

컨텐츠
https://www.koreaminecraft.net/files/thumbnails/850/878/002/262x150.crop.jpg?20211018191640
(포션 시리즈) 3편 - 비 2

GlassesFilm

2021-10-18

3

https://www.koreaminecraft.net/files/thumbnails/337/871/002/262x150.crop.jpg?20211014221722

플러그인

달고나 뽑기 in Minecraft 8

BlueRing1017

2021-10-14

6

https://www.koreaminecraft.net/files/thumbnails/848/870/002/262x150.crop.jpg?20211014131239

답안지

한마탐 4주차 / 정오표 + 해설 1

베개냥이

2021-10-14

1