プログラミング

LaravelでTelegramボット作成

LaravelとBotManを使用してTelegramボットを構築する方法について、完全かつ包括的なガイドを日本語で説明します。

1. はじめに

Telegramボットは、Telegramメッセージングアプリケーション内でユーザーと自動的にやりとりを行うプログラムです。BotManは、複数のチャットプラットフォームをサポートするPHPのライブラリで、Telegramボットを簡単に構築できる強力なツールです。このガイドでは、LaravelフレームワークとBotManを使用して、Telegramボットを作成する方法をステップバイステップで解説します。

2. 必要なもの

  • PHP(推奨バージョン:7.4以上)
  • Composer(PHPパッケージ管理ツール)
  • Laravel(バージョン8以上)
  • Telegramアカウント
  • BotManパッケージ
  • ngrok(ローカルサーバーを公開するために必要)
  • Telegram Botのトークン(後述する方法で取得)

3. Telegram Botの作成

まず、TelegramでBotを作成する必要があります。以下の手順で行います。

ステップ1: TelegramでBotFatherにアクセス

  1. Telegramを開き、「BotFather」を検索します。
  2. 「BotFather」とのチャットを開始し、/newbotコマンドを入力します。
  3. ボットの名前とユーザー名(@付きのユニークな名前)を指定します。
  4. ボットが作成されると、BotFatherからボットの「APIトークン」が提供されます。このトークンは後で使用するので、必ずメモしておきます。

4. Laravelプロジェクトのセットアップ

次に、Laravelプロジェクトを作成します。

ステップ1: Laravelのインストール

bash
composer create-project --prefer-dist laravel/laravel telegram-bot

ステップ2: ディレクトリに移動

bash
cd telegram-bot

5. BotManパッケージのインストール

LaravelにBotManをインストールします。BotManはTelegramを含むさまざまなメッセージングプラットフォームに対応しています。

ステップ1: BotManパッケージのインストール

bash
composer require botman/botman composer require botman/driver-telegram

ステップ2: BotMan設定ファイルの作成

BotManの設定を行うため、configフォルダに新しい設定ファイルを作成します。config/botman.phpというファイルを作成し、以下の内容を追加します。

php
return [ 'telegram' => [ 'token' => env('TELEGRAM_TOKEN'), ], ];

ステップ3: .envファイルにトークンを追加

.envファイルに、先ほどBotFatherから取得したTelegramボットのAPIトークンを追加します。

env
TELEGRAM_TOKEN=your-telegram-bot-token

6. Webhookの設定

Telegramは、ボットにメッセージが送信されるとWebhooksを使用して通知します。そのため、Webhooksを設定する必要があります。

ステップ1: ngrokのインストールと起動

ローカル環境でWebhookをテストするために、ngrokを使用してローカルサーバーをインターネットに公開します。ngrokは公式サイトからインストールできます。

bash
ngrok http 8000

これにより、https://xxxxxx.ngrok.ioのようなURLが提供されます。このURLをTelegramにWebhookとして設定します。

ステップ2: Webhookエンドポイントの作成

routes/web.phpにWebhookを処理するためのルートを追加します。

php
use BotMan\BotMan\BotMan; use BotMan\BotMan\Messages\Conversations\Conversation; Route::post('/botman', 'BotManController@handle');

次に、app/Http/Controllers/BotManController.phpを作成し、Webhookを処理するメソッドを実装します。

php
namespace App\Http\Controllers; use BotMan\BotMan\BotMan; use BotMan\BotMan\Messages\Incoming\IncomingMessage; use BotMan\BotMan\Messages\Outgoing\OutgoingMessage; use BotMan\BotMan\Drivers\DriverManager; use BotMan\BotMan\BotManFactory; class BotManController extends Controller { public function handle() { $config = [ 'telegram' => [ 'token' => env('TELEGRAM_TOKEN'), ] ]; $botman = BotManFactory::create($config); $botman->hears('こんにちは', function (BotMan $bot) { $bot->reply('こんにちは!どうしましたか?'); }); $botman->listen(); } }

ステップ3: WebhookをTelegramに設定

次に、Telegram APIを使用してWebhookを設定します。ngrokで提供されたURLをWebhookとしてTelegramに設定します。

bash
curl -X POST https://api.telegram.org/bot/setWebhook -d "url=https://xxxxxx.ngrok.io/botman"

YOUR_BOT_TOKENを実際のボットのトークンに置き換え、ngrokで取得したURLを指定します。

7. ボットの動作確認

ブラウザまたはPostmanでWebhookが正しく設定されているか確認します。Telegramでボットにメッセージを送信し、ボットが正しく応答するか確認します。

例えば、「こんにちは」と送信すると、ボットが「こんにちは!どうしましたか?」と返答するはずです。

8. BotManでの高度な機能の追加

BotManでは、さまざまな機能を追加できます。例えば、ユーザーからの入力を処理したり、カルーセルメニューを表示したり、スケジュールされたメッセージを送信することもできます。これらの機能はBotManの公式ドキュメントを参考にして、必要に応じて追加してください。

9. 結論

LaravelとBotManを使ってTelegramボットを作成する方法を学びました。これで、基本的なTelegramボットを作成し、ユーザーとのやりとりを開始する準備が整いました。BotManの強力な機能を活用すれば、さらに高度なボットを作成することができます。

このガイドを参考にして、さまざまなBotManの機能を試しながら、あなたのTelegramボットを進化させてください。

Back to top button