Telegram は日本じゃあまり人気ありません。
でも開発APIとかは充実してるので、ボット作成はかなりしやすいです。
つい最近も Telegram でボットを作りたい場面があったので、
ここでは PHP を使ってTelegramボットを作る手順をまとめてみました。
では早速、その手順をコード例付きで紹介していきます。
このページの目次
1.まずはボット専用アカウントを作成しよう
ボット作成には、 botfather を利用する必要があります。
これは 全ボットを管理する親玉ボットみたいなもの です。
ではまず、次URLにアクセス
@botfather : https://telegram.me/botfather
▼ネタアカウントに見えるけど、公式
アクセスすると、botfather のテレグラムアカウントが開くはず
開いたら会話をスタート( /start )させて、次手順を試してください。
- まずはボット新規作成の開始
チャット欄に /newbot と入力すればボット作成がスタートする
- ボット名を入力する
次に botfather から作成したいボット名の入力を求められる。
これは後から変えられるので、 Hoge Bot みたいに適当に入力 - ボットのユーザー名を入力
その次はボットのユーザー名の入力( @ から始まるやつ)
この名前は必ず最後が bot で終わらないとダメ - 表示されたAPIトークンをメモしておく
例えば 123456789:e0t3gfawzPgo3JDj-FmDLlJsKeevfqj9 みたいな形式
▼APIトークンは必ずメモしておくこと!
最後の API トークンまでコピーできたら、ボット作成は完了です。
2.ユーザーにボット追加してもらう "アクション" を用意
ではボット作成ができたら、次のステップです
それはボットを追加してもらうアクションを用意すること
一番確実なのは、リンクから Telegram を開いて追加してもらうこと ですね。
例えばボット名が hoge_bot なら、次のリンクを作ればOK
1 2 3 |
<a href="https://telegram.me/hoge_bot" target="_blank"> ボットを追加してね! </a> |
とりあえずボット登録のフォームとか用意しておいて、
そこに「必ずボット追加して!」みたいなリンクを表示しておけばいいと思います。
ボット追加してもらうのは必須作業
3.ユーザーの chat_id を取得して保存
chat_id っていうのは Telegram でのユーザーIDみたいなもの です。(少し違うかも...)
その chat_id を取得してデータベースに保存するのが次のステップ
この ID がボットからメッセージを自動送信するのに必要になります。
その取得については、まず次みたいなフォームを作成
1 2 3 4 5 6 7 8 9 |
<form action="get-chat-id.php" method="POST"> <input type="text" id="telegram_user_name" name="telegram_user_name" placeholder="テレグラムの@ユーザー名を入力" style="width: 250px;" /> <button type="submit">連携する</button> <br> Botメッセージを受け取るには <a href="https://telegram.me/hoge_bot" target="_blank">@hoge_bot</a> をあなたのテレグラムに追加してください。 </form> |
このフォームに @ユーザー名 を入力してもらいます。
そしてこのフォームから送信されたら、 chat_id を取得するスクリプトを実行
例えば上フォームの場合、 get-chat-id.php というスクリプトを書きました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/// Telegramのユーザー名 $user_name = @$_POST['telegram_user_name']; if( preg_match( '/^\@/', $user_name ) ){ /// @ がついてるなら取り除く $user_name = preg_replace( '/^\@/', '', $user_name); } /// API TOKEN $api_token = '【API TOKENに置き換え】'; $url = "https://api.telegram.org/bot{$api_token}/getUpdates"; $resp = file_get_contents( $url ); $result = json_decode($resp,true)['result']; foreach ( $result as $rst_obj ) { $chat_obj = $rst_obj['message']['chat']; $from_obj = $rst_obj['message']['from']; if( $from_obj['username'] === $user_name ){ $chat_id = $chat_obj['id']; } } /// とりあえずファイルに chat_id 保存(本当なDB保存) $json = @file_get_contents( 'telegram-chat-ids.txt' ); $chat_ids = ($json) ? json_decode( $json, true ) : []; $chat_ids[$user_name] = $chat_id; $json = json_encode( $chat_ids, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT ); file_put_contents( 'telegram-chat-ids.txt', $json ); |
必ず '【API TOKENに置き換え】' を各自のAPIキーで置き換えるのを忘れずに!
まあスクリプトについては深く解説しません。
メッセージを送るだけなら、 chat_id を取得して保存するだけでいいので
あと上コードだとファイルに
chat_id を保存してますが、
まともなサービスならDBとかに保存しておいてください。(管理も楽)
4.Telegramボットからメッセージを送るPHP例
以上の手順が終わればほぼ最終段階
あとはPHP側から chat_id を使ってメッセージを送るだけです。
本当はDB保存がいんだけど、
例えば
telegram-chat-ids.txt ファイルに
chat_id を保存してるとしましょう。
1 2 3 4 |
[ 'user1' => 192837465 'user2' => 564738291 ] |
このファイルから
chat_id を1つずつ読み出し、
ボットからメッセージを自動送信するのが次のコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/// ▼ API TOKENに置き換え $api_token = '【API TOKEに置き換え】'; $json = file_get_contents( 'telegram-chat-ids.txt' ); $chat_ids = ($json) ? json_decode( $json, true ) : []; foreach ( $chat_ids as $usernamae => $chat_id ) { $bot_msg = "こんにちは {$username} さん! by Hoge Bot" $query = 'chat_id=' . urlencode( $chat_id ) . '&text=' . urlencode( $bot_msg ); $url = "https://api.telegram.org/bot{$api_token}/sendMessage?".$query; $resp = file_get_contents($url); $rst = ($resp) ? json_decode($resp, true)['ok'] : false; if($rst) { ///メッセージ送信成功時 } else { // メッセージ送信失敗時 } } |
必ず '【API TOKEに置き換え】' を置き換えるのを忘れずに!(2回目)
本当はデータベースに chat_id を保存するですが、今回はファイルを使ってます。
あとは次の Rest API を呼び出せば任意のユーザーにメッセージを送れます。
1 |
https://api.telegram.org/bot[API_TOKEN]/sendMessage?chat_id=[CHAT_ID]&text=[MESSAGE] |
ポイントとしては botXXX:YYYYY みたいに bot のあとにAPIキーを渡すこと
あと chat_id を必ず指定することくらいですかね、そんなに難しくないです。
あとはこのスクリプトを Cronジョブ にしとけば、全自動のボットが作れるはず
レンタルサーバーとかでもCronは使えます。
会員サイトとかだと、ユーザーに手軽にメッセージを送るのに役立つかもしれません。
ここまでのまとめ - Telegramボットは作るの超簡単!
ここまでまとめて気づいたけど、Telegramって本当にボットが作りやすい!
Twitter もそこそこ楽に作れるけど、Telegram は本当に簡単ですね。
Facebook とか LINE だとアカウント取得すら難関なので
気軽にボット作成したいなら、Telegramボット に挑戦することをオススメします。
以上、PHP で Telegramボット を作る手順についてでした。ではではバイバイ(^^)/~~~