개인 자료란 (JE)

  서버 커뮤니티

Profile sleepylapis 대표칭호 없음

sleepylapis b50c05ef88e04e8db496ad93cb9ea996

Profile

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

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

2020.05.08 조회 수 493 추천 수 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/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1

/files/thumbnails/932/765/003/262x150.crop.jpg?20240410124459

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

노트블럭전문가

2024-04-10

0

/files/thumbnails/403/765/003/262x150.crop.jpg?20240409190538

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

Sonttukk

2024-04-09

4