ericsalerno/slzbot-irc

简单的事件驱动irc机器人,用PHP编写,仅供娱乐。

0.1.13 2017-08-17 19:30 UTC

This package is auto-updated.

Last update: 2024-09-22 04:47:58 UTC


README

为了娱乐和练习,我将创建一个超级简单的基于PHP的irc机器人,它可以从命令行(或容器)运行。

想法是创建一个基于事件的Bot类,您可以扩展它以添加自己的业务逻辑。

我希望这不需要多言,但请切勿以root身份运行此机器人

使用方法

使用composer将库包含到您的项目中。

composer require ericsalerno/slzbot-irc

您可以通过包含salernolabs/slzbot-irc并按如下方式激活它来使用该机器人。

$bot = new \SlzBot\IRC\Bot();

$bot
    ->setServer('irc.efnet.org', 6667)
    ->setChannels('#ircphp')
    ->setUser('myBotNickname', 'SlzBot')
       //any events and commands you want to bind can go here
    ->connect();

事件

您可以将事件绑定到服务器发生的事件并对其进行响应。您可以将多个事件执行器绑定到单个事件。例如,376是MOTD结束的IRC op代码。您可以将事件绑定到自动加入频道的操作,如下所示。

$autoJoins = new \SlzBot\IRC\Events\AutoJoin();
$autoJoins->setAutoJoins(['#programming', '#irc', '#php']);

$bot
   ->addOpCodeEvent(376, $autoJoins)

Slzbot在\SlzBot\IRC\OpCodes类中监听一些op代码和其他事件。

事件类必须实现\SlzBot\IRC\Events\EventInterface接口才能工作,因此您可以在项目中自由创建它们。

命令

您还可以将命令绑定到您的机器人,以便它可以监听用户请求。例如,如果用户输入!uptime,并且您想监听该关键字,您可以这样做

$command = new \SlzBot\IRC\Commands\Uptime();

$bot
    ->addCommand('uptime', $command);

这将使机器人监听用户说 "!uptime",然后它将执行类中的代码。在这种情况下,它只是说自类实例化以来过去了多久。

命令类必须实现\SlzBot\IRC\Commands\CommandInterface接口才能工作,因此您可以在项目中自由创建它们。您还可以使用setCommandActivationCharacter更改默认的'!'激活字符。

示例

您可以使用包含的通用机器人运行快速示例。在命令行中,假设您位于项目目录中

/path/to/php samples/generic/bot.php nickname #channel irc.yourservername

通用机器人期望几个参数。运行它而不带参数以获取用法信息。

Usage: php samples/generic/bot.php <nickname> <channel> <server> [port]