portlandlabs/slackbot

使用slack RTM API和slack Web API的Slackbot。基于PSR组件构建

安装: 33

依赖项: 0

建议者: 0

安全: 0

星星: 1

观察者: 3

分支: 0

开放问题: 0

类型:项目

0.0.1 2018-10-01 03:09 UTC

This package is auto-updated.

Last update: 2024-09-11 17:35:25 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

这个SlackBot是一个功能齐全的Slackbot,模仿了老式的IRCbot,并具有新式高级bot的功能。您可以对任意消息做出反应,例如在消息中跟踪表情符号“给@user一些 ❤️”,或者构建简单的呼叫和响应风格的消息,例如@bot dosomething

入门指南

设置

首先,通过将.env.dist复制到.env并配置所需详情来配置您的slackbot

$ cp .env.dist > .env

运行bot

Slackbot由一个PHP脚本驱动,运行它以开始

$ php slackbot.php

权限和角色

Slackbot动作由roles管理。可用的角色有BotUserAdmin

命令

命令由通过RTM API流动的事件触发。任何类型为message的事件都会通过命令堆栈流动。

基本命令定义了->shouldHandle(Message $message)->handle(Message $message),但SimpleCommand使实现更加容易。扩展SimpleCommand的命令与控制台命令的工作方式非常相似。声明您的$signature属性和一个run(Message $message, ArgumentManager $manager)方法,父类将管理所有挂钩。

向bot添加命令

您可以通过bot的命令管理器向bot添加命令

$bot->commands()->addCommand(CustomCommand::class);

添加默认命令
我们已经将默认命令包装在一个简单的提供者中

(new \PortlandLabs\Slackbot\Command\DefaultProvider())->register($bot);

向Slack发送消息

有几种方法可以从命令发送消息到Slack

  1. RTM API带有打字指示器

    当使用RTM API时,您有权触发打字指示器(这样Slack就会说bot正在打字)

    $this->bot->feignTyping($channel, $message)

    此方法的结果是一个当Slack确认发送的消息时解决的Promise。

  2. RTM API不带打字指示器

    如果您不想有(令人毛骨悚然的)打字指示器,并且想让Slack知道您的bot不会打字,

    $this->bot->rtm()->sendMessage($channel, $message)

    此结果也是一个Promise

  3. Web API带有更新能力

    Web API使用HTTP向Slack发送消息,因此可能比使用RTM API慢一些,但具有大量附加功能的优势。

    简单用法:
    最简单的用法是与Payload Builder一起使用

    $api = $this->bot->api();
    $api->getBuilder()->send($message)->to($channel)->withIcon($icon)->execute($api);
    
    // Update the previously sent message
    $api->getBuilder()->update()->withText($newText)->execute($api);

    复杂用法:
    如果您需要更多功能或不同的端点,可以直接构建有效负载并将其与API一起发送

    $payload = new ChatPostMessagePayload();
    $this->prepare($payload);
    
    // Send the payload
    $payloadResponse = $this->bot->api()->send($payload);