rtippin/messenger-bots

Messenger Bots Addon

Fund package maintenance!
RTippin

v1.14.2 2024-01-03 15:50 UTC

README

Latest Version on Packagist Total Downloads Tests StyleCI License

Preview

This package is an addon for rtippin/messenger

Notice

  • This package is not required to use the bots feature built into Messenger.
  • For more documentation on creating custom bot handlers and packages, visit the official Chat Bots documentation.

Features:

  • Ready-made bot action handlers and packages that will plug into the core messenger package.
  • Register only the selected bots you wish to use, or let us auto-register all bots we provide.
  • Included Bot Handlers:
    • Chuck Norris Bot
    • Coin Toss Bot
    • Commands Bot
    • Dad Joke Bot
    • Document Finder Bot
    • Giphy Bot
    • Insult Bot
    • Invite Bot
    • Joke Bot
    • Kanye West Bot
    • Knock Bot
    • Location Bot
    • Nuke Bot
    • Random Image Bot
    • Reaction Bomb Bot
    • Reaction Bot
    • Reply Bot
    • Rock Paper Scissors Bot
    • Roll Bot
    • Weather Bot
    • Wikipedia Bot
    • YoMomma Bot
    • YouTube Bot
  • Included Packaged Bots:
    • Games Package
    • Jokester Package
    • Neo package

Prerequisites

  • To use this package, you must already have the core Messenger package installed.
  • You must have bots enabled from within the messenger.php config, or your .env.
  • The built-in bot subscriber should also be enabled, unless you wish to register your own event subscriber.
  • If the subscriber is queued, be sure to have your queue worker process the defined channel, messenger-bots is the default.
MESSENGER_BOTS_ENABLED=true
'bots' => [
    'enabled' => env('MESSENGER_BOTS_ENABLED', false),
    'subscriber' => [
        'enabled' => true,
        'queued' => true,
        'channel' => 'messenger-bots',
    ],
],

Installation

Via Composer

composer require rtippin/messenger-bots

Config

'weather_api_key' => env('BOT_WEATHER_API_KEY'),
'ip_api_key' => env('BOT_LOCATION_API_KEY'),
'youtube_api_key' => env('BOT_YOUTUBE_API_KEY'),
'giphy_api_key' => env('BOT_GIPHY_API_KEY'),
'random_image_url' => env('BOT_RANDOM_IMAGE_URL', 'https://source.unsplash.com/random'),
'auto_register_all' => env('BOT_AUTO_REGISTER_ALL', false),

Publish the config file

php artisan vendor:publish --tag=messenger-bots
  • To use weather bot, you must get an API key from Weather API
  • To use YouTube bot, you must get an API key from Google Developers Console
  • To use Giphy bot, you must get an API key from Giphy
  • You may use the location bot without an API key, but for commercial use, you must get an API key from IP API
  • Random image bot will use unsplash as the default endpoint to grab a random image from. You may overwrite this endpoint.

Auto Registering Handlers and Packages

  • If you plan to use all the bot handlers and packaged bots provided, you can skip registering them manually by enabling the BOT_AUTO_REGISTER_ALL flag.

Update your .env

BOT_AUTO_REGISTER_ALL=true

Manually Registering Handlers and Bot Packages

  • Inside your MessengerServiceProvider (or any of your providers), you must register all bot handlers and bot packages you want enabled in your application.
  • You can use the MessengerBots facade to register the handlers and packages. Be sure you do it inside the boot method.

Example:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use RTippin\Messenger\Facades\MessengerBots;
use RTippin\MessengerBots\Bots\ChuckNorrisBot;
use RTippin\MessengerBots\Bots\CoinTossBot;
use RTippin\MessengerBots\Bots\CommandsBot;
use RTippin\MessengerBots\Bots\DadJokeBot;
use RTippin\MessengerBots\Bots\DocumentFinderBot;
use RTippin\MessengerBots\Bots\GiphyBot;
use RTippin\MessengerBots\Bots\InsultBot;
use RTippin\MessengerBots\Bots\InviteBot;
use RTippin\MessengerBots\Bots\JokeBot;
use RTippin\MessengerBots\Bots\KanyeBot;
use RTippin\MessengerBots\Bots\KnockBot;
use RTippin\MessengerBots\Bots\LocationBot;
use RTippin\MessengerBots\Bots\NukeBot;
use RTippin\MessengerBots\Bots\RandomImageBot;
use RTippin\MessengerBots\Bots\ReactionBombBot;
use RTippin\MessengerBots\Bots\ReactionBot;
use RTippin\MessengerBots\Bots\ReplyBot;
use RTippin\MessengerBots\Bots\RockPaperScissorsBot;
use RTippin\MessengerBots\Bots\RollBot;
use RTippin\MessengerBots\Bots\WeatherBot;
use RTippin\MessengerBots\Bots\WikiBot;
use RTippin\MessengerBots\Bots\YoMommaBot;
use RTippin\MessengerBots\Bots\YoutubeBot;
use RTippin\MessengerBots\Packages\GamesPackage;
use RTippin\MessengerBots\Packages\JokesterPackage;
use RTippin\MessengerBots\Packages\NeoPackage;

class MessengerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(): void
    {
        MessengerBots::registerHandlers([
            ChuckNorrisBot::class,
            CoinTossBot::class,
            CommandsBot::class,
            DadJokeBot::class,
            DocumentFinderBot::class,
            GiphyBot::class,
            InsultBot::class,
            InviteBot::class,
            JokeBot::class,
            KanyeBot::class,
            KnockBot::class,
            LocationBot::class,
            NukeBot::class,
            RandomImageBot::class,
            ReactionBombBot::class,
            ReactionBot::class,
            ReplyBot::class,            
            RockPaperScissorsBot::class,
            RollBot::class,
            WeatherBot::class,
            WikiBot::class,
            YoMommaBot::class,
            YoutubeBot::class,
        ]);

        MessengerBots::registerPackagedBots([
            GamesPackage::class,
            JokesterPackage::class,
            NeoPackage::class,
        ]);
    }
}

Registered handlers and packages will now be available to choose when adding an action to a bot or installing a packaged bot.

Credits - Richard Tippin

License - MIT

Please see the license file for more information.