개발

telegrambot /명령어 입력받기

내공얌냠 2020. 5. 9. 14:14

telegrambot /명령어 입력받기! CommandHandler를 사용한다.

이번 글에서는 두 가지를 살펴본다.

 

1. /help 라고 입력할 경우 응답하는 내용

2. /say [사용자 입력값] 라고 입력할 경우 응답하는 내용

 

1. /help 라고 입력할 경우 응답하는 내용

from telegram.ext import Updater, CommandHandler

def help(update, context):
    # 설명
    context.message.reply_text("/help : kairos 사용 명령어 표시\n/create : 알람 생성") 

kairos_token = "[각자의 토큰 입력]"
updater = Updater(kairos_token)
updater.dispatcher.add_handler(CommandHandler('help', help))

updater.start_polling()
updater.idle()

 Updater 와 CommandHandler 를 import 한다

콜백할 변수를 선언한다(help)

update, context  두 가지 인수가 필수

context.message.reply_text("출력할 text")

"출력할 text"에서 \n을 하면 개행이 된다.

토큰을 변수에 저장해두고, Updater에 저장해두면 유용하게 사용할 변수~.~를 만들 수 있다

자 이제 유용하게 사용할 변수~.~를 유용하게 쓰면 된다

updater.dispatcher.add_handler(CommandHandler('help', help))

CommandHandler('[사용자가 입력할 글자', [호출할 함수명]))

 

자 이제 테스트를 해볼까요?

위에 있는 것은 무시해주세요~.~

 

2. /say [사용자 입력값] 라고 입력할 경우 응답하는 내용

from telegram.ext import Updater, CommandHandler

def say(update, context, args):
    output_message = str(context.message.chat_id) + '은 이렇게 말했습니다.\n' + str(args[0])
    context.message.reply_text(output_message) 
    
kairos_token = "[각자의 토큰 입력]"
updater = Updater(kairos_token)
updater.dispatcher.add_handler(CommandHandler('say', say, pass_args=True))

updater.start_polling()
updater.idle()

위와 동일하게 import, token을 발급

say라는 함수를 만들었다. 

인수로는 세 가지가 있다. update, context, args

CommandHandler에서 pass_args=True 라고 설정하여 던져주고, 받는 함수에서는 args 라는 인수로 받게 된다.

첫번째 인자는 사용자가 호출할 이름, 두번째 인자는 호출될 함수명,

세번째는 arguments를 넘길지 여부이다. 기본값은 False 이다.

args[0] 이라고 함수 내에서 쓸 수 있다. 배열 형태로 전달되니 여러 개 전달도 가능. 

오류가 나면 그냥 실행이 안 되어 버린다. 메시지도 없다. 주의!

context.message.chat_id 는 현재 채팅의 아이디이다. 방마다 다르다.

그럼 실행해보겠습니다~.~

 

공식문서에 더 많은 이야기가 있어요: https://python-telegram-bot.readthedocs.io/en/stable/telegram.ext.commandhandler.html

728x90
반응형