안녕하세요. 이번 포스팅에서는 예전에 다뤘던 텔레그램 봇 API 연결 이후의 버튼 메뉴 만들기와 함수 호출 방법에 대해 설명하려고 합니다. 학업으로 인해 포스팅이 너무 늦은점 죄송합니다.
이전편을 보시려면 ====> CLICK
============================================================================
①버튼메뉴
먼저 버튼 메뉴는 InlineKeyboardButton, InlineKeyboardMarkup 이라는 키워드와 함께 사용됩니다.
InlineKeyboardButton은 버튼을 만들어주기 위한 클래스 형태라고 생각하시면 쉽게 이해할 수 있습니다.
원형 및 사용의 예시는 다음과 같습니다.
telegram.InlineKeyboardButton(text, url=None, callback_data=None, switch_inline_query=None, switch_inline_query_current_chat=None, callback_game=None, pay=None, **kwargs)
keyboard = [
[InlineKeyboardButton("제출", callback_data='submit')],
[InlineKeyboardButton("뒤로가기", callback_data='goback')]
]
키보드라는 array에 InlineKeyboardButton 2개(버튼 text: 제출, 뒤로가기)를 저장한 모습입니다.
이 때 버튼의 이름 뒤에 callback_data라는 파라미터가 추가로 붙게 되는데요, submit, goback이라는 함수를 찾아가라는 의미로 적용이 됩니다.
이 외에도 url과 같은 다양한 파라미터들이 존재하니 필요에 따라서 사용하시면 됩니다. (아래 링크에 자세하게 설명이 되어있어요)
저렇게 버튼을 생성하고 나면 아래 코드처럼 bot 명령어에 추가해서 사용할 수 있습니다!
bot.send_message(chat_id=id, text="버튼 예제입니다.", reply_markup=keyboard_markup)
============================================================================
②명령어 추가하기
저희는 현재 /start 명령어만을 사용해 처음 시작할 때 메시지를 출력하게 하였는데요
이와 유사한 형태로 /edit, /modify, /cancel 등 다양한 명령어에 반응하는 챗봇을 개발할 수 있습니다.
가장 먼저 할 일은 명령어를 등록하는 일이겠죠?
명령어를 봇에 등록하는 방법은 아주 쉽습니다. 아래 예시처럼 명령어를 입력해주시면 됩니다!
updater.dispatcher.add_handler(modify_handler)
updater.dispatcher.add_handler(CallbackQueryHandler(goback, pattern='^goback$'))
기본형태는 updater.dispatcher.add_handler()의 형태로 진행이 되고, 기본적인 메소드 형태를 이용하는 경우에는 위와 같이 작성하면 됩니다.
이 때 명령을 처리할 handler는 def handler_name(bot, update): 형태로 구현하시면 됩니다.
아래 보이는 CallbackQueryHandler는 버튼에 추가한 callback_data를 처리하기 위한 명령어 등록입니다.
callback_data에 기입한 대로 pattern에 입력하면됩니다. 저는 goback 함수를 callback으로 이용한다고 버튼을 만들었어서 CallbackQueryHandler(goback, pattern='^goback$') 이라고 기입을 했습니다.
goback 또한 마찬가지로 def goback(bot, update): 형태로 구현하시면 됩니다.
============================================================================
시간이 모자라서 포스팅이 짧은 점 양해 부탁드립니다. 다음 번에는 챗봇에 추가하기 가장 간편한 인증 방법인 captcha 추가하기에 대해 설명드리고자 합니다. 감사합니다.
'개발 > Python' 카테고리의 다른 글
Openpyxl 사용방법 (0) | 2019.08.20 |
---|---|
파이썬으로 텔레그램 챗봇만들기 기초편[1] (7) | 2018.12.20 |