メインコンテンツまでスキップ

AWS Lambda で Telegram bot を作成する

AWS Lambda で Telegram bot を作成する手順を解説します

Telegram アカウントを作成しログインする

Telegram アカウントを作成しログインします
Telegram
👇・・・誰も友達いません😢

image

BotFatherを友達追加する

👇BotFatherというBOTを検索してSTARTを押します
※ 何だかあやしげですがこれが公式BOTです

image

BOT 作成

image

👆BotFatherに/newbotとメッセージを送ります
・ 続いてボットの名称を入力します
・ さらに続いてボットのidとなるusernameを入力します(一意の名称で、末尾がbotで完了する必要があります)

image

👆トークンが発行されるので、控えます

image

👆先ほど入力したボットのid(username)で検索すると出てくるのでSTARTを押します

image

👆とりあえずテストメッセージを送信します

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())
image

👆こんな感じでメッセージが届きます

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"}

👇設定後、送信したメッセージが

image

👇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())

👇こんなメッセージが表示されます。

image

関連記事

AWS Lambda で Telegram bot を作成する

更新日:2026年08月15日

ITとソフトウェアの人気オンラインコースHP Directplus -HP公式オンラインストア-