public function __construct() {
$this->logger = new Logger('TwitchBot');
- $this->logger->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));
+ $this->logger->pushHandler(new StreamHandler('php://stdout', Logger::INFO));
$this->token = TwitchToken::firstWhere('nick', 'localhorsttv');
if (!$this->token) {
if ($text[0] != '!') return;
$channel = Channel::firstWhere('twitch_chat', '=', $target);
if (!$channel) return;
- $this->logger->info('got command '.$text.' on channel '.$channel->title);
+ $this->handleChatCommand($channel, $msg);
+ }
+
+ public function handleChatCommand(Channel $channel, IRCMessage $msg) {
+ $cmd = explode(' ', ltrim($msg->getText(), '!'), 2);
+ if (!isset($channel->chat_commands[$cmd[0]])) return;
+ $config = $channel->chat_commands[$cmd[0]];
+ $this->logger->info('got command '.$cmd[0].' on channel '.$channel->title);
+ try {
+ $command = ChatCommand::create($this, $channel, $config);
+ $command->execute($cmd[1] ?? '');
+ } catch (\Exception $e) {
+ $this->logger->warning('error executing command '.$cmd[0].' on channel '.$channel->title.': '.$e->getMessage());
+ }
}
public function login() {