[go: up one dir, main page]

Skip to content

Addon for rtippin/messenger that adds ready-made bot action handlers. This integrates with the core bots feature.

License

Notifications You must be signed in to change notification settings

RTippin/messenger-bots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Messenger Bots

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.

About

Addon for rtippin/messenger that adds ready-made bot action handlers. This integrates with the core bots feature.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Languages