파이썬으로 텔레그램 봇 메세지 보내기

특정 이벤트(주식, 메일, 작업 완료 등)가 발생했을 때 PC와 스마트폰으로 알림을 받기 위해 텔레그램 봇을 만들어보았습니다. [메세지 보내기]로 주식의 감시 조건 충족 시 알람을 받을 수 있고, [챗봇 자동 응답하기]로 명령어를 입력해 증권사 앱 접속 없이 빨리 매수하거나 수익률을 확인할 수 있습니다.



텔레그램 봇의 장점

  1. 봇을 만드는 방법이 매우 쉬움.
  2. 텔레그램 앱이 가벼워 모바일에서 실행이 빠름.
  3. 미밴드의 앱 알림 기능으로 메시지 수신이 가능.
  4. 봇 이용 시 비용이 발생하지 않음.




텔레그램 봇 만들기

1. PC 텔레그램 또는 앱을 설치한 후 botfather를 검색합니다. 이름이 비슷한 다른 채널들에 유의하세요.

파이썬으로 텔레그램 봇 메세지 보내기



2. /newbot 명령어를 메시지 창에 입력하세요.

파이썬으로 텔레그램 봇 메세지 보내기



3. 봇의 이름을 입력하세요. 이름이 다른 봇과 중복되도 됩니다.

4. 봇의 고유 이름을 입력하세요. 이름에 무조건 bot이란 단어가 들어가야 합니다. 또한, 다른 봇과 중복되지 않는 고유한 단어여야 합니다.

파이썬으로 텔레그램 봇 메세지 보내기



5. 봇 생성이 완성된 후 토큰이 주어집니다.

파이썬으로 텔레그램 봇 메세지 보내기



6. 봇의 고유 이름으로 검색하면 만들어진 채널이 나타납니다.

파이썬으로 텔레그램 봇 메세지 보내기




파이썬으로 메시지 보내기

1. 채팅 주소(ID)를 찾습니다. 붉은 부분에 자신의 토큰을 넣고 웹 브라우저의 주소창에 입력합니다.

https://api.telegram.org/bot[토큰]/getUpdates
파이썬으로 텔레그램 봇 메세지 보내기



2. 텔레그램 봇 라이브러리를 설치합니다.

pip install python-telegram-bot
파이썬으로 텔레그램 봇 메세지 보내기



3. 아래 소스코드에 자신의 토큰과 채널ID를 입력 후 실행합니다. 실행 결과 메세지가 보내집니다.

파이썬으로 텔레그램 봇 메세지 보내기
1
2
3
4
5
6
7
8
9
import telegram
 
telegram_token = ‘토큰’
 
telegram_chat_id = 1700000000
 
bot = telegram.Bot(token = telegram_token)
 
bot.sendMessage(chat_id = telegram_chat_id, text = ‘메시지 보내기’)
cs

1 – 텔레그램 라이브러리 포함
3 – 토큰을 보관하는 변수.
5 – 채팅ID를 보관하는 변수.
7 – 재사용 시 코드 단축을 위한 변수.
9 – 메세지를 보내는 함수.



파이썬 챗봇으로 자동 응답하기

파이썬으로 텔레그램 봇 메세지 보내기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import telegram
 
from telegram.ext import Updater
from telegram.ext import CommandHandler
 
telegram_token = ‘토큰’
telegram_chat_id = 1700000000
 
bot = telegram.Bot(token = telegram_token)
updater = Updater(token = telegram_token)
 
def send_message(update, context):
        bot.sendMessage(chat_id = telegram_chat_id, text = ‘챗봇 자동응답’)
 
def add_handler(cmd, func):
        updater.dispatcher.add_handler(CommandHandler(cmd, func))
 
add_handler(‘send’, send_message)
 
updater.start_polling()
updater.idle()
cs

1:3 – 텔레그램 라이브러리 포함.
6:7 – 토큰과 채팅ID를 보관하는 변수.
9:10 – 재사용 시 코드 단축을 위한 변수.
12:13 – 호출 시 메세지를 보내는 함수.
15:16 – 명령어를 만드는 함수.
18 – /send 라는 명령어를 입력하면 함수를 실행하는 핸들러를 만듦.
20 – 코드가 계속 동작하며 명령어 입력 감시. 매개변수로 [감시 간격]과 [서버 정리]가 있음.
21 – updater가 종료 되지 않게 함.



파이썬 챗봇에 버튼 만들기

파이썬으로 텔레그램 봇 메세지 보내기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import telegram
 
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ChatAction
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
 
telegram_token = ‘토큰’
telegram_chat_id = 1700000000
 
bot = telegram.Bot(token = telegram_token)
updater = Updater(token = telegram_token)
 
def cmd_task_buttons(update, context):
    task_buttons = [
        [
        InlineKeyboardButton( ‘작업1’, callback_data=1 ), InlineKeyboardButton( ‘작업2’, callback_data=2 )
        ], 
        [
        InlineKeyboardButton( ‘작업3’, callback_data=3 ), InlineKeyboardButton( ‘작업4’, callback_data=4 )
        ], 
        [
        InlineKeyboardButton( ‘종료’, callback_data=9 )
        ]
    ]
    
    reply_markup = InlineKeyboardMarkup( task_buttons )
    
    context.bot.send_message(
        chat_id=update.message.chat_id
        , text=‘작업을 선택해주세요.’
        , reply_markup=reply_markup
    )
 
def cb_button(update, context):
    query = update.callback_query
    data = query.data
    
    context.bot.send_chat_action(
        chat_id=update.effective_user.id
        , action=ChatAction.TYPING
    )
    
    context.bot.edit_message_text(
        text=‘[{}] 작업을 완료하였습니다.’.format( data )
        , chat_id=query.message.chat_id
        , message_id=query.message.message_id
    )
 
def add_handler(cmd, func):
        updater.dispatcher.add_handler(CommandHandler(cmd, func))
 
add_handler(‘task’, cmd_task_buttons)
 
def callbsck_handler(func):
        updater.dispatcher.add_handler(CallbackQueryHandler(func))
 
callbsck_handler(cb_button)
 
updater.start_polling()
updater.idle()
cs

3:4 – 새로운 텔레그램 라이브러리 포함.

InlineKeyboardButton – 인라인 키보드를 정의함.
InlineKeyboardMarkup – 인라인 키보드를 그려줌.
ChatAction – 채널 이름 아래에 ‘타이핑 중’, ‘녹음 중’ 같은 상태를 보여줌.
CallbackQueryHandler – 눌려진 콜 백 데이터를 받는 핸들러를 만듦.

12 – 인라인 키보드의 정보를 담아둔 함수.
13:23 – 만들 키보드 버튼의 개수, 텍스트, 콜 백 데이터를 정의
25 – 키보드의 레이아웃을 그려줌
27:31 – 그린 레이아웃을 메시지로 발송해 채팅창에 띄움.
33 – 버튼이 눌리면 콜 백 데이터로 특정 작업 실행.
37:40 – ‘타이핑 중’, ‘녹음 중’ 같은 상태를 보여줌.
42:46 – 작업 결과를 메시지로 채팅창에 띄움. edit_message_text는 기존의 메시지를 변경하기 때문에 인라인 키보드는 사라짐.
53:56 – 콜 백 핸들러를 만들어 감시를 시작함



텔레그램 앱 알림이 안 보일 때

1. 스마트폰의 알림 설정을 체크하세요. 아이폰의 경우 [설정 > 알림 > 미리보기 표시 (항상)], [설정 > 알림 > 텔레그램]

파이썬으로 텔레그램 봇 메세지 보내기



2. 텔레그램 앱 설정을 체크하세요. [텔레그램 앱 > 설정 > 알림 및 소리]

파이썬으로 텔레그램 봇 메세지 보내기



3. PC 텔레그램이 켜져 있는지 체크하세요.

파이썬으로 텔레그램 봇 메세지 보내기



4. 미밴드로 텔레그램의 알림을 받을 수 있습니다. [미핏 앱 > 프로필 > 미밴드 > 앱 알림]

파이썬으로 텔레그램 봇 메세지 보내기



5. 아이폰에서 텔레그램 알림 미리보기가 안된다면? [설정 > Touch ID 및 암호 > 암호 끄기]로 스마트폰의 암호를 해제했다 실행해 보세요.

파이썬으로 텔레그램 봇 메세지 보내기




참조 사이트

[텔레그램 라이브러리 문서]
Python Telegram Bot – Home

[파이썬으로 메시지 보내기]
[Python] 파이썬으로 텔레그램 봇 사용하기
[Python] 파이썬을 이용하여 텔레그램(Telegram) 메세지 보내기
파이썬으로 텔레그램으로 메시지 보내기 – v1

[파이썬 챗봇으로 자동 응답하기]
[챗봇 만들기] 30분 만에 텔레그램 봇 만들기
python으로 telegram bot 활용하기 – 3 챗봇편
[Telegram] 무작정 시작하기 (2) – CommandHandler

[파이썬 챗봇에 버튼 만들기]
[Telegram] 무작정 시작하기 (3) – Button Message



관련글

guest
0 Comments
Inline Feedbacks
모든 댓글 보기