AWS Lambda で Telegram bot を作成する
AWS Lambda で Telegram bot を作成する手順を解説します
Telegram アカウントを作成しログインする
Telegram アカウントを作成しログインします
Telegram
👇・・・誰も友達いません😢
BotFatherを友達追加する
👇BotFatherというBOTを検 索してSTARTを押します
※ 何だかあやしげですがこれが公式BOTです
BOT 作成
👆BotFatherに/newbotとメッセージを送ります
・ 続いてボットの名称を入力します
・ さらに続いてボットのidとなるusernameを入力します(一意の名称で、末尾がbotで完了する必要があります)
👆トークンが発行されるので、控えます
👆先ほど入力したボットのid(username)で検索すると出てくるのでSTARTを押します
👆とりあえずテストメッセージを送信します
BOTからのメッセージ送信
以下のURLからユーザIDを取得 します
<あなたのBOT_TOKEN>は、上記手順で取得したトークンを指定します
https://api.telegram.org/bot<あなたのBOT_TOKEN>/getUpdates
トークンが1234567890:ABCdefGHIjkLMNopQRstuVWxyZの場合、URLは下記の例のようになります
https://api.telegram.org/bot1234567890:ABCdefGHIjkLMNopQRstuVWxyZ/getUpdates
このurlをブラウザに貼り付けると以下のような出力が得られます。
{
"ok": true,
"result": [
{
"update_id": 300572061,
"message": {
"message_id": 4,
"from": {
"id": 1234567890,
"is_bot": false,
"first_name": "******",
"last_name": "******",
"username": "***********",
"language_code": "ja"
},
"chat": {
"id": 1234567890,
"first_name": "******",
"last_name": "******",
"username": "***********",
"type": "private"
},
"date": 1786766402,
"text": "test message 001"
}
},
{
"update_id": 300572062,
"message": {
"message_id": 5,
"from": {
"id": 1234567890,
"is_bot": false,
"first_name": "******",
"last_name": "******",
"username": "***********",
"language_code": "ja"
},
"chat": {
"id": 1234567890,
"first_name": "******",
"last_name": "******",
"username": "***********",
"type": "private"
},
"date": 1786766404,
"text": "test message 002"
}
}
]
}
👆ここでidに指定されている1234567890が送信先ユーザIDです
これを使ってテストメッセージを送信します
import requests
TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "1234567890"
TEXT = "Python から送信テスト!"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
payload = {
"chat_id": CHAT_ID,
"text": TEXT
}
res = requests.post(url, json=payload)
print(res.json())
👆こんな感じでメッセージが届きます
BOT へのWebhook設定
以下を参考に AWS lambda への公開エンドポイントを作成します
AWS APIGateway からの SNS 連携
以下では例としてhttps://abc1234567890.execute-api.ap-northeast-1.amazonaws.com/v1/
がエンドポイントだったとします
次にブラウザで以下URLへアクセスします
https://api.telegram.org/bot<YOUR_TOKEN>/setWebhook?url=<YOUR_WEBHOOK_URL>
トークンが1234567890:ABCdefGHIjkLMNopQRstuVWxyZ
エンドポイントがhttps://abc1234567890.execute-api.ap-northeast-1.amazonaws.com/v1/
の場合、URLは下記の例のようになります
https://api.telegram.org/bot1234567890:ABCdefGHIjkLMNopQRstuVWxyZ/setWebhook?url=https://abc1234567890.execute-api.ap-northeast-1.amazonaws.com/v1/
設定が完了すると以下の出力が得られます
{"ok":true,"result":true,"description":"Webhook was set"}
👇設定後、送信したメッセージが
👇AWS の lambda ログに出力されます
[2026-08-15T13:37:42.022000+09:00] "body": "{\"update_id\":1234567890,\"message\":{\"message_id\":8,\"from\":{\"id\":1234567890,\"is_bot\":false,\"first_name\":\"**\",\"last_name\":\"*****\",\"username\":\"******\",\"language_code\":\"ja\"},\"chat\":{\"id\":11111111,\"first_name\":\"*****\",\"last_name\":\"******\",\"username\":\"******\",\"type\":\"private\"},\"date\":1786768661,\"text\":\"test message 004\"}}",
BOTからのメッセージ送信2(inline_keyboardを使った拡張メッセージの例)
import json
import requests
TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "1234567890"
TEXT = "以下の3つの選択肢から選んでください:"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
# すべて callback_data を持った3つのボタンを横並びに配置
inline_keyboard = {
"inline_keyboard": [
[
{"text": "ボタンA ", "callback_data": "click_button_a"},
{"text": "ボタンB ", "callback_data": "click_button_b"},
{"text": "ボタンC ", "callback_data": "click_button_c"}
]
]
}
payload = {
"chat_id": CHAT_ID,
"text": TEXT,
"reply_markup": json.dumps(inline_keyboard)
}
res = requests.post(url, json=payload)
print(res.json())
👇こんなメッセージが表示されます。
関連記事
- AWS organization を利用して新しいAWS環境をゼロから作成する
- AWS lambda関数の作成から実行まで
- AWS lambda関数と SQS SNS との連携
- AWS APIGateway からの SNS 連携
- AWS APIGateway からの lambda 連携
- AWS Lambda のソースを更新する
- AWS Lambda でLine bot を作成する
- AWS Lambda で Telegram bot を作成する
AWS Lambda で Telegram bot を作成する
更新日:2026年08月15日

