71 lines
1.6 KiB
PHP
71 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Slack\Command;
|
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
use Slack\Base as SlackBase;
|
|
use Slack\Message;
|
|
|
|
abstract class Base extends SlackBase
|
|
{
|
|
public function __construct(array $request)
|
|
{
|
|
Log::info(sprintf('SCb:Slack SLASHCOMMAND Initialised [%s]',get_class($this)),['m'=>__METHOD__]);
|
|
parent::__construct($request);
|
|
}
|
|
|
|
/**
|
|
* Enable getting values for keys in the response
|
|
*
|
|
* @note: This method is limited to certain values to ensure integrity reasons
|
|
* @note: Classes should return:
|
|
* + channel_id,
|
|
* + team_id,
|
|
* + ts,
|
|
* + user_id
|
|
* @param string $key
|
|
* @return mixed|object
|
|
*/
|
|
public function __get(string $key)
|
|
{
|
|
switch ($key) {
|
|
case 'command':
|
|
$command = preg_replace('/^([a-z]+)(\s?.*)/','$1',$this->_data->text);
|
|
|
|
return $command ?: 'help';
|
|
|
|
case 'slashcommand':
|
|
return object_get($this->_data,'command');
|
|
|
|
case 'channel_id':
|
|
case 'response_url':
|
|
case 'enterprise_id':
|
|
case 'team_id':
|
|
case 'user_id':
|
|
return object_get($this->_data,$key);
|
|
|
|
case 'text':
|
|
return preg_replace("/^{$this->command}\s*/",'',object_get($this->_data,$key));
|
|
|
|
case 'trigger':
|
|
return object_get($this->_data,'trigger_id');
|
|
}
|
|
}
|
|
|
|
protected function bot_in_channel(): ?Message
|
|
{
|
|
$o = new Message;
|
|
|
|
if (! $this->channel() || ! $this->channel()->active) {
|
|
$o->addAttachment(
|
|
Message\Attachment::item()
|
|
->title(':robot_face: Bot not in this channel')
|
|
->text(sprintf('Please add %s to this channel and try this again.',$this->team()->bot->name ?: 'the BOT'))
|
|
->color('#ff0000')
|
|
);
|
|
}
|
|
|
|
return $o->isEmpty() ? NULL : $o;
|
|
}
|
|
} |