Telegram ボットの作り方
@BotFather で Telegram ボットを作る方法:/newbot コマンド、名前と bot で終わるユーザー名、トークンの守り方、コマンド、ボタン、ボットのコードを動かす場所を説明します。
Telegram ボットは、公式ボット @BotFather とのチャットで作ります。/newbot を送り、ボットに名前を付けて、bot で終わるユーザー名を選びます。BotFather は、あなたのプログラムがボットを操作するためのキーである、トークンを返します。ボットを作るのに費用はかかりません。Telegram は、ボットのプラットフォームについて、ユーザーにも開発者にも料金を取りません。ただし、BotFather がするのはボットの登録だけです。ボットが誰かに返事をするには、パソコンかサーバーで動くプログラムが必要です。
BotFather でボットを作る方法
- @BotFather を開いて「開始」をタップします。
/newbotコマンドを送ります。- ボットの名前、つまり表示名を入力します。
- ユーザー名、つまりボットのアドレスを入力します。
@my_shop_botのような形です。5〜32文字で、ラテン文字、数字、アンダースコアだけが使え、botで終わる必要があります。 - BotFather がトークンを送ってきます。これでボットが作られました。
名前はあとから /setname で変えられますが、Telegram のドキュメントによると、ユーザー名は作成後に変更できません。慎重に選んでください。
トークンとは何か、どう守るか
トークンは、数字と文字がコロンで区切られた形をしています。持っている人はボットを完全に操作できるため、Telegram は、安全な場所に保管し、直接のアクセスが必要な人にだけ共有するよう勧めています。
- トークンを、公開のコード、GitHub、チャットに載せないでください。
- 漏れた場合は、Telegram のドキュメントにあるとおり、BotFather の
/tokenコマンドで新しいトークンを発行します。そのあと、プログラムが使っているすべての場所で更新します。 - トークンはボット専用です。
api_idとapi_hashは、ユーザーとしてサインインするプログラム向けの別のキーです(取得方法は、英語とロシア語のガイド「Telegram api_id and api_hash: how to get them on my.telegram.org」で説明しています)。
BotFather で設定すること
/mybots を送ると、自分のボットの設定を操作するメニューが開きます。BotFather のミニアプリでも同じことができます。ボットの見た目は、個別のコマンドでも設定できます。
/setname— ボットの名前。/setdescription— ボットの説明。512文字までの短いテキストです。/setabouttext— 「概要」(About)の情報。120文字までの、もっと短いテキストです。/setuserpic— ボットのプロフィール画像。/setcommands— コマンドの一覧。/を入力すると、Telegram が候補として表示します。/setjoingroups— ボットをグループに追加できるかどうか。/setprivacy— ボットがグループで受け取るメッセージの範囲。/deletebot— ボットを削除して、ユーザー名を解放します。
ボットに返事をさせる
ボットは、Bot API を通じて Telegram と通信するプログラムです。すべてのリクエストは https://api.telegram.org/bot<token>/METHOD に送られます。メッセージの受け取り方は2つあり、同時には使えません。
- getUpdates(ロングポーリング):プログラムが Telegram に新しいメッセージを問い合わせます。公開アドレスが要らないので、始めるにはいちばん簡単です。
- Webhook:Telegram があなたのサーバーにメッセージを送ります。HTTPS と、ポート 443、80、88、8443 のどれかが必要です。
コードは、HTTP リクエストを送れる言語なら、どの言語でも書けます。人気のライブラリには、Python の aiogram と python-telegram-bot、JavaScript の grammY と Telegraf があります。公式のチュートリアルでは、Java のボットを例に説明しています:BotFather から「Hello World」まで。ボットは、パソコンの電源が入っている間だけ自分のパソコンで動かすことも、VPS で動かして24時間動かし続けることもできます。
ボットのボタンとコマンド
- コマンドは、ボットが処理する
/startのような言葉です。候補の一覧は/setcommandsで設定します。 - メッセージの下のインラインボタンは、チャットにテキストを送らず、ボットに押されたことを伝えるか、リンクを開きます。
- 返信キーボードは、通常のキーボードの代わりに、用意した返答の候補を表示します。
- ミニアプリは、Telegram の中で開く本格的なインターフェースです。
詳しくはボットの機能の概要をご覧ください。
ボットでの支払い
ボットでのデジタル商品やサービスの支払いは、Telegram Stars で行います。請求書には通貨 XTR を使い、決済プロバイダーは要りません。設定方法は、英語とロシア語のガイド「Telegram Stars payments in your bot: how to accept Stars」で説明しています。ボットが集めた Stars は Fragment を通じて引き出します:ボットから Stars を引き出す方法。
プログラムから、ユーザーのために Stars や Premium を購入したいですか? Shiba Bank ボットにはそのための API があります:API ドキュメント。
よくある質問
コードを書かずに Telegram ボットを作るには?
@BotFather を通じて、1分でボットを登録できます。ただし、何かをさせるにはコードが必要です。Telegram 自身も、ボットを作るには、少なくともある程度のプログラミングのスキルが必要だと述べています。
Telegram ボットを作るのにいくらかかりますか?
かかりません。Telegram は、ボットのプラットフォームについて、ユーザーにも開発者にも料金を取りません。ボットを自分のサーバーで動かす場合は、そのサーバーの費用だけがかかります。
BotFather とは何ですか?
ボットを作成して管理するための、Telegram の公式ボットです。名前、説明、画像、コマンド、トークンを扱います。
BotFather のトークンを取得するには?
/newbot の直後にトークンが届きます。漏れた場合は、BotFather の /token コマンドで新しいトークンが発行されます。
ボットにはどんなユーザー名を付けられますか?
5〜32文字で、ラテン文字、数字、アンダースコアが使え、bot で終わる必要があります。たとえば my_shop_bot です。
Telegram ボットにボタンを追加するには?
ボタンはボットのコードで定義します。メッセージの下のインラインボタンと、返信キーボードがあります。/ メニューのコマンド一覧は、BotFather の /setcommands で設定します。


