개인 자료란 (JE)

  서버 커뮤니티

Profile sleepylapis 대표칭호 없음

sleepylapis b50c05ef88e04e8db496ad93cb9ea996

Profile

커뮤니티 소통 개발하기 디스코드

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

2020.05.08 조회 수 545 추천 수 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

열심히 쓸게요!

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3