์งํ ๋จ๊ณ: ๋ณธ ํน๊ฐ์ย Part 4ย ์๋ฃ ํ ์งํ๋ฉ๋๋ค.ย ์ฌ์ฉ ๋ฐฉ๋ฒ: ์๋ ์๋ด๋ ํ๋กฌํํธ๋ฅผ ๋ณต์ฌํ์ฌ Claude Code์ ์
๋ ฅํ๋ฉด ํ
๋ ๊ทธ๋จ ์๋ฆผ ์์คํ
๊ตฌ์ถ์ด ์๋ฃ๋ฉ๋๋ค.
0. ์ฌ์ ์ค๋น: ํ
๋ ๊ทธ๋จ Bot ์์ฑ ๋ฐ ์ ๋ณด ํ๋
์ด ๋จ๊ณ๋ Claude๋ฅผ ํตํ์ง ์๊ณ ย ์๊ฐ์ ๋ณธ์ธ์ด ์ง์ ย ์ํํด์ผ ํ๋ ํ์ ์ค์ ์
๋๋ค.
- ํ
๋ ๊ทธ๋จ ์ฑ ์คํ ํ ๊ฒ์์ฐฝ์ย @BotFatherย ๊ฒ์ ๋ฐ ๋ํ ์์
- ์
๋ ฅ์ฐฝ์ย
/newbotย ๋ช
๋ น์ด ์ ์ก
- ๋ด์ ํ์ ์ด๋ฆ(Name) ์
๋ ฅ (์:ย
๋ด ์ฃผ์ ์๋ฆผ)
- ๋ด์ ์ฌ์ฉ์๋ช
(Username) ์
๋ ฅ (๋ฐ๋์ย
bot์ผ๋ก ๋๋์ผ ํจ. ์:ย hodu_stock_bot)
- ๋ฐ๊ธ๋ย HTTP API TOKENย ๋ณต์ฌ ๋ฐ ๋ณ๋ ๋ฉ๋ชจ
- ์์ฑ๋ ๋ณธ์ธ์ ๋ด ๊ฒ์ ํ ๋ํ๋ฐฉ์ ๋ค์ด๊ฐ์ย
/startย ์ ์ก (ํ์)
- ์น ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ์๋ URL ์
๋ ฅ ํ ์ ์ (TOKEN ๋ถ๋ถ์ ๋ณธ์ธ์ ํ ํฐ ์ฝ์
)
https://api.telegram.org/bot{TOKEN}/getUpdates
- ํ๋ฉด์ ์ถ๋ ฅ๋ ํ
์คํธ ์คย
"chat":{"id":์ซ์...}ย ๋ถ๋ถ์ย ์ซ์(Chat ID)ย ๋ณต์ฌ ๋ฐ ๋ณ๋ ๋ฉ๋ชจ
1. ํ๊ฒฝ ์ค์ ๋ฐ ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ
ํ๋กฌํํธ 1: ํจํค์ง ์ค์น ๋ฐ ํ๊ฒฝ ๋ณ์ ์ค์
Plaintext
`ํ๋ก์ ํธ ๋ฃจํธ ํ๊ฒฝ์ ๋ค์ ํจํค์ง๋ฅผ ์ค์นํด ์ค:
pip install python-dotenv requests
์ค์น ํ ํ๋ก์ ํธ ๋ฃจํธ์ .env ํ์ผ์ ์์ฑํ๊ณ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ์ค. ๊ฐ์ ๋น์๋๊ฑฐ๋ ๋๋ฏธ ํ
์คํธ๋ฅผ ๋ฃ์ด์ค.
TELEGRAM_BOT_TOKEN=์ฌ๊ธฐ์_BotFather์์_๋ฐ์_ํ ํฐ
TELEGRAM_CHAT_ID=์ฌ๊ธฐ์_์ฑํ
_ID`
ํ๋กฌํํธ 2: ํ
๋ ๊ทธ๋จ ์ ์ก ๋ชจ๋ ๊ตฌํ
Plaintext
`notifier.py ํ์ผ์ ์์ฑํ๊ณ ์๋ ๋ช
์ธ์ ๋ฐ๋ผ ํจ์๋ฅผ ๊ตฌํํด ์ค.
- send_telegram(text) ํจ์:
- python-dotenv์ load_dotenv๋ฅผ ์ฌ์ฉํ์ฌ .env์์ TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID ๋ก๋
- requests.post๋ฅผ ์ฌ์ฉํด ํ
๋ ๊ทธ๋จ sendMessage API ํธ์ถ (URL: https://api.telegram.org/bot{TOKEN}/sendMessage)
- parse_mode๋ "Markdown"์ผ๋ก ์ค์
- Markdown ํ์ฑ ์๋ฌ(HTTP 400) ๋ฐ์ ์, ํน์๋ฌธ์ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด parse_mode ์์ด plain text๋ก ์ฌ์ ์กํ๋ ์์ธ ์ฒ๋ฆฌ ์ถ๊ฐ
- ํ ํฐ์ด๋ ์ฑํ
ID ๋๋ฝ ์ ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์๊ณ ๊ฒฝ๊ณ ๋ก๊ทธ๋ง ์ถ๋ ฅ
- ์ฑ๊ณต ์ True, ์คํจ ์ False ๋ฐํ
- _send_long_telegram(msg) ํจ์:
- ์
๋ ฅ๋ ๋ฉ์์ง๊ฐ 4000์ ์ดํ์ธ ๊ฒฝ์ฐ send_telegram์ผ๋ก ์ฆ์ ์ ์ก
- 4000์ ์ด๊ณผ์ธ ๊ฒฝ์ฐ:
- ์ค๋ฐ๊ฟ(\n) ๋จ์๋ก ํ
์คํธ ๋ถํ
- ๊ฐ ์ฒญํฌ(chunk)๊ฐ 4000์๋ฅผ ๋์ง ์๋๋ก ๋์
- 4000์ ํ๊ณ ๋๋ฌ ์ง์ ์ ์๋ก์ด ์ฒญํฌ๋ก ๋ถ๋ฆฌ
- ๊ฐ ์ฒญํฌ๋ฅผ ์์ฐจ์ ์ผ๋ก send_telegram์ ํตํด ์ ์ก
- ํ
๋ ๊ทธ๋จ API Rate Limit ๋ฐฉ์ง๋ฅผ ์ํด ์ฒญํฌ ์ ์ก ์ฌ์ด์ 0.5์ด ๋๊ธฐ ์๊ฐ(delay) ์ถ๊ฐ
- ์ด ์ ์ก๋ ์ฒญํฌ์ ๊ฐ์๋ฅผ ๋ฐํ
- ํ
์คํธ ์ฝ๋:
- if name == "main": ๋ธ๋ก์
send_telegram("๐งช ํ
์คํธ ๋ฉ์์ง์
๋๋ค!") ์ถ๊ฐ`