자유 그리고 경험

텔레그램 봇, 명령어 링크 만들기(파라미터까지) 본문

기술

텔레그램 봇, 명령어 링크 만들기(파라미터까지)

배아줄기세포 2022. 6. 26. 11:59
반응형

개요

  텔레그램은 메세지 내에 명령어가 있으면, 클릭하여 바로 실행할 수 있는 기능이 있습니다.

그런데 이 명령어에 파라미터가 필요한 경우에는, 공백으로 떨어져있는 파라미터 까지 같이 클릭되지 않는 문제점이 있습니다. 아래와 같은 방법이 있다는 것을 알게 되었습니다.

 

관련 스택오버플로우 링크

 

Telegram Bot Clickable Command with Parameters

I am using python-telegram-bot to create a Telegram bot. I am trying to insert a command with parameters into bot messages, such that a user could press it? Here, on telegram core page I found a ...

stackoverflow.com

 

_를 이용해 파라미터를 넘기는 방식

위와 같이 유동적으로 작동하는 명령어를 만들어서 해결할 수 있겠다는 생각이 들었습니다.

해결방법 요약

  • CommandHandler가 아닌 MessageHandler 내부에서 Filters.regex('pattern')을 이용해 특정패턴의 메시지를 명령어 처럼 처리할 수 있습니다.
  • 이 때 pattern앞에 명령어처럼 /명령어 붙여주고 파라미터간 구분은 언더스코어 (_) 로 함으로써 메시지 상에서 클릭 가능하게 만들 수 있습니다.

삽질방지 팁

  • 위 링크에 예제로 들어가있는 RegexHandler는 더 이상 지원하지 않는 기능입니다. 대신에 CommandHandler에 Filters.regex 를 넣어 활용하는 방법이 있습니다.
 

GitHub - python-telegram-bot/python-telegram-bot: We have made you a wrapper you can't refuse

We have made you a wrapper you can't refuse. Contribute to python-telegram-bot/python-telegram-bot development by creating an account on GitHub.

github.com

  • 텔레그램에서 현재 한글 명령어는 지원하지 않는 것 같습니다. 한글이 한글자라도 들어가면 중간에 클릭 링크가 끊기는 현상이 있습니다.

예제 코드

from telegram import ParseMode
from telegram.ext import Updater, Filters, MessageHandler, Defaults

TELEGRAM_TOKEN="토큰"

def findCommand(update, context):
    parameter = update.message.text.replace('/f_', '') #명령어는 /f
    parameters = parameter.split('_') #파라미터를 다시 list로 나누고 싶다면 이 코드를 사용할 수 있다.
    update.message.reply_text(parameter)
    
if __name__ == '__main__':
    updater = Updater(token=TELEGRAM_TOKEN, defaults=Defaults(parse_mode=ParseMode.HTML))
    dispatcher = updater.dispatcher

    dispatcher.add_handler(MessageHandler(Filters.regex(r'^(/f_[\w]+)$'),findCommand)) #/f_ 뒤에 명령어가 들어오는 경우 캡쳐한다.

    updater.start_polling() # Start the bot
    updater.idle() # Wait for the script to be stopped, this will stop the bot as well

활용 예제

지난번에 만들었던 텔레그램 단어장에서, 바로 클릭 가능하도록 기능을 추가하였습니다. 아쉽게도 한글은 지원되지 않아. 단어장 DB의 ID를 링크로 만들어 추가하였습니다.

 

2022.06.24 - [기술] - 텔레그램 봇 활용, 암기카드(사전) 만들기

 

텔레그램 봇 활용, 암기카드(사전) 만들기

개요 텔레그램 봇을 이용해, 키워드를 입력하면 키워드에 맞는 간단한 설명을 출력하도록 봇을 만들어보려고 한다. 스펙 python DB sqlite3 - 디비를 파일로 만들기 때문에, 이식이 쉽고 로그인 등 귀

valentine92.tistory.com

키워드 추천, 연결해주는 봇

이를 활용하면 나만의 작은 wiki를 만들수도 있겠습니다.

 

위에 소개된 코딩 강의 링크는 여기 있습니다.

 

[탈잉] 엑셀로 처음 배우는 코딩

 

엑셀로 처음 배우는 코딩 | 탈잉

#진행방식 PDF 전자책을 통해 코딩을 차근차근 배워나갈 수 있습니다. 코딩의 기본 개념인 변수, 조건문, 반복문, 함수를 배웁니다. 주말 하루만에 훌훌 읽어나갈 수 있게 구성하였습니다. #프로

taling.me

감사합니다.

반응형
Comments