function startTyping() {
        if($this->typingTriggered['count'] === 0) {
            $fn = function () {
                $this->client->apimanager()->endpoints->channel->triggerChannelTyping($this->id)->done(function () {
                    $this->_updateTyping($this->client->user, \time());
                }, function () {
                    $this->_updateTyping($this->client->user);
                    $this->typingTriggered['count'] = 0;
                    
                    if($this->typingTriggered['timer']) {
                        $this->client->cancelTimer($this->typingTriggered['timer']);
                        $this->typingTriggered['timer'] = null;
                    }
                });
            };
            
            $this->typingTriggered['timer'] = $this->client->addPeriodicTimer(7, $fn);
            $fn();
        }
        
        $this->typingTriggered['count']++;
    }