ericsalerno / slzbot-irc
简单的事件驱动irc机器人,用PHP编写,仅供娱乐。
0.1.13
2017-08-17 19:30 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: 5.7
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]