Для корректного отображения процесса ввода сообщения в Telegram и правильного отслеживания статуса печатания сообщений, вам необходимо учитывать несколько моментов.
Ваш текущий код вызывает метод `sendChatAction`, который всегда будет возвращать `true`, так как он просто указывает на то, что действие "печатает..." было отправлено в Telegram. Не существует механизма, который подтверждает, что пользователь действительно печатает сообщение. Будет всегда `true`, если вы вызываете этот метод.
Чтобы достичь желаемой функциональности, можно использовать следующие методы:
1. **Отслеживание событий на стороне клиента**:
Если вы хотите отобразить статус "Печатает...", когда пользователь начинает вводить сообщение, вам нужно отслеживать события ввода. В JavaScript для этого можно использовать событие `input` или `keydown`.
Пример использования jQuery:
```javascript
$('#message-input').on('input', function() {
$.ajax({
url: '/chat/status-telegramm',
data: {},
type: 'POST',
success: function(res){
$('.typing-message').html(res);
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
});
```
Здесь `#message-input` — это id вашего текстового поля. Каждый раз, когда пользователь начинает вводить текст, отправляется AJAX-запрос, который обновляет статус отображения.
2. **Изменение PHP кода**:
Ваша функция `statusTelegrammAction` будет просто возвращать успешно отправленное сообщение, без дополнительных проверок:
```php
public function statusTelegrammAction() {
$response['ok'] = true; // Предполагается, что действие инициировано
$response['result'] = true; // Действие выполнено успешно
echo json_encode($response);
die;
}
```
3. **Отображение сообщения**:
Чтобы отображать статус "Печатает..." только тогда, когда поступает AJAX-запрос, проверяйте это в JavaScript:
```javascript
$('#message-input').on('input', function() {
$('.typing-message').html('Печатает...');
$.ajax({
url: '/chat/status-telegramm',
data: {},
type: 'POST',
success: function(res){
// Если нужно, обработайте результат
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
});
$('#message-input').on('blur', function() {
$('.typing-message').html(''); // Убираем статус при потере фокуса
});
```
Таким образом, вы можете контролировать отображение статуса печатания непосредственно на стороне клиента и отправлять запросы на сервер только во время ввода текста.