今天是第七天!昨天我們已經順利向 BotFather 申請到了 Bot Token,也透過 @userinfobot 拿到了個人的 Chat ID。在把前面算好的「黃金交叉訊號」發出去之前,我們得先確定 Python 與 Telegram 的通訊管道是暢通的。今天我們要用 Python 內建的網路請求工具,傳送一條「Hello World」測試訊息!
步驟一:理解通訊原理
Telegram 機器人的運作方式非常直覺:
整個過程完全不需要安裝複雜的套件,直接使用 Python 內建的 urllib 模組就能搞定!
步驟二:撰寫測試腳本 (main.py)
請打開專案中的 main.py,然後照著下面這樣寫。
import urllib.request
import urllib.parse
# 1. 填入你 Day 06 取得的通訊金鑰(請替換成你的真實資料)
TOKEN = "你的_BOT_TOKEN"
CHAT_ID = "你的_CHAT_ID"
# 2. 準備要發送的訊息內容
message = " 嗨!這是來自 Python 台股機器人的第一條測試訊息!"
# 3. 組裝 Telegram API 連線網址
# Telegram 發送純文字訊息的標準介面叫 sendMessage
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
# 4. 把參數(目標 Chat ID 與 訊息內容)進行 URL 編碼
data = urllib.parse.urlencode({
"chat_id": CHAT_ID,
"text": message
}).encode('utf-8')
# 5. 發送請求給 Telegram 伺服器
try:
req = urllib.request.Request(url, data=data)
with urllib.request.urlopen(req) as response:
print(" 訊息發送成功!快看手機 Telegram 有沒有收到!")
except Exception as e:
print(f" 發送失敗,錯誤原因:{e}")
這裡的話,我後面有做修改,因為我試了好幾次他都發送失敗。
具體原因應該是因為格式問題,所以我改成下面這個。他能比較準確發現錯誤。
import urllib.request
import urllib.parse
# 1. 請填入你的 Token 和 Chat ID
TOKEN = "8877609710:AAGl4CBrv-98_d9pMzHQmsWCVxqkLApGhnI".strip()
CHAT_ID = "8903354287".strip()
# 2. 準備測試訊息
message = " 嗨!這是來自 Python 台股機器人的第一條測試訊息!"
# 3. 組裝 Telegram API 連線網址
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
# 4. 打包參數
data = urllib.parse.urlencode({
"chat_id": CHAT_ID,
"text": message
}).encode('utf-8')
# 5. 發送請求
try:
req = urllib.request.Request(url, data=data)
with urllib.request.urlopen(req) as response:
print(" 訊息發送成功!快看手機 Telegram 有沒有收到!")
except urllib.error.HTTPError as e:
print(f" 發送失敗,HTTP 錯誤代碼:{e.code}")
print(f"詳細原因:{e.read().decode('utf-8')}") # 這裡會印出 Telegram 的具體錯誤提示!
except Exception as e:
print(f" 其他錯誤:{e}")

結果原來根本原因是因為還沒在 Telegram 裡點開機器人按下「Start」!!
犯了一個超級低級的錯誤,真的被自己笨到了。
最後,成功的話,畫面會是長這樣!
小結一下,看到真的有訊息跳出來時覺得真的好酷,沒想到是我做出來的。
實戰除錯:
404 Not Found:代表網址路徑或 Token 格式有誤(例如 Token 前後有空格式、bot 關鍵字漏掉)。
400 Bad Request: chat not found:代表 Telegram 不認識這個 Chat ID!
解決關鍵:Telegram 為了防騷擾,規定使用者必須主動向機器人發起對話(按下 /start),機器人後續才有權限透過 API 發送通知!