Index
先前準備¶
請同學在自行搭配影片,完成基本建立telegram帳號
向 BotFather 申請 Bot¶
Telegram 官方提供 BotFather 來管理你的 Bot。
- 在 Telegram 搜尋
BotFather - 輸入
/newbot - 輸入 Bot 名稱
- 輸入一個以
bot結尾的使用者名稱 - 取得一串 Token
這串 Token 很重要,等同於你的 Bot 密碼。

安裝套件¶
範例:echo_bot.py¶
CommandHandler 是什麼¶
這行的意思是:
- 當使用者輸入
/start - 就呼叫
start()函式
你可以把它理解成「事件與處理函式的對應表」。
update 與 context¶
每個 handler 很常長這樣:
update代表這次事件的內容,常用資訊包括:
update.effective_user.id
update.effective_user.first_name
update.effective_chat.id
update.message.text
context代表處理這次事件時可用的上下文資訊,常用內容包括:
範例:功能選單:menu_bot.py¶
訊息處理、文字解析與 filters¶
真實世界的 Bot 不會只有 /start、/help。很多時候使用者會直接輸入:
- 今天心情不好
- 幫我記一下買牛奶
- 我剛剛午餐花了 120
這時就要學會用 MessageHandler 處理一般文字訊息。
# 常見寫法:
MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text)
# 意思:要是文字,但不能是指令
# 這很重要,否則 `/start` 這種訊息也可能被一般文字 handler 吃掉。
範例:文字分類--電商FAQ自動回覆Bot¶
範例:文字分類--美食推薦Bot¶
訊息處理順序要注意¶
如果你有多個 MessageHandler,順序就很重要。
例如:
# 錯誤寫法
# 這樣很可能 `handle_text` 先吃掉了訊息,導致後面的 `handle_lunch` 沒機會執行。
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text))
app.add_handler(MessageHandler(filters.Regex("^午餐"), handle_lunch))
建議:
- 先放更具體的 handler
- 再放通用 fallback handler
範例:文字分類--星座查詢bot¶
為tg bot增加按鈕¶
按鈕的好處:
- 降低輸入錯誤
- 讓功能更容易被發現
- 很適合做選單型工具 Bot
可以分為Reply Keyboard 與 Inline Keyboard
Reply Keyboard:像主選單¶
- Reply Keyboard 會直接出現在輸入框附近,像是常駐選單
| 很適合: | 不太適合: |
|---|---|
| - 主選單 - 常見分類 - 固定少量選項 |
- 每次內容都不同的資料 - 需要針對每筆資料生成不同按鈕的情境 |
Inline Keyboard:像某一則訊息的操作按鈕¶
Inline Keyboard 是直接附在訊息下方的按鈕,常搭配 callback_data。
JobQueue 提醒bot¶
JobQueue 讓你可以安排某個函式在未來執行。例如:
- 10 分鐘後提醒我背單字
- 今晚 8 點提醒我交作業
- 每天早上 7 點提醒我起床
保存提醒資料¶
如果只會排程,不會管理,就很難做出像樣的應用。常見需求:
- 列出目前有哪些提醒
- 取消某個提醒
- 讓同一個人可以建立多筆提醒
這時就會需要:
job.namecontext.job_queue.get_jobs_by_name()- 額外用字典或資料庫保存資訊
資料儲存¶
如果 Bot 一重開就失憶,那很多功能都只是展示用。
真正有價值的 Bot,通常要能記住:
- 待辦事項
- 記帳資料
- 使用者偏好
- 投票結果
經常搭配的儲存方式,簡單可以分為Json、資料庫(這邊以SQlite為例)。
JSON 的特點¶
- 好懂
- 好教
- 適合小型資料
- 範例:以JSON實作電商商品管理Bot
- 範例:以JSON實作台南旅遊景點推薦Bot
- 範例:以JSON實作打卡簽到Bot
SQLite 的特點¶
- 像真正資料庫
- 可以查詢、排序、篩選
- 比 JSON 更接近正式專案
- 範例:以SQLite實作記帳Bot
- 範例:以SQLite實作每日花費摘要bot
API 串接與Telegra Bot¶
只靠本機資料,你能做的事情有限。
一旦會串 API,Bot 就能變成:
- 天氣查詢助手
- 匯率換算工具
- 課程資訊查詢器
- AI 助手
API 可以怎麼理解¶
可以把 API 想成「另一個程式提供給你使用的資料入口」。
你的 Bot 發出請求:
對方伺服器回傳資料: