Ваша проблема, связанная с отправкой сообщений через бота в Telegram, может быть вызвана несколькими факторами. Исходя из вашего описания, когда сообщение включает вложения, текст не отправляется, а только вложения. Это может происходить из-за особенностей структуры ваших запросов и методов API Telegram.
### Возможные причины:
1. **Метод отправки сообщений**:
- Telegram API не позволяет отправлять текст и вложения одним запросом, если они не являются частью одной функции (например, оформление изображения с заголовком). Вам нужно убедиться, что вы используете правильные методы для отправки текста и вложений (например, `sendMessage` для текста и `sendPhoto` для изображений).
2. **Проблема с формированием сообщения**:
- Если вы пытаетесь отправить текст как часть вложений, Telegram может игнорировать текст, если это не явно указано. Для начала попробуйте сначала отправить текст, а потом вложение, чтобы убедиться, что оба сообщения доставляются.
3. **Некорректная работа с опциями**:
- Убедитесь, что вы правильно передаете параметры в метод отправки, и что они соответствуют разработанному API. Например, если вы используете `sendPhoto`, текстовое содержимое (caption) должно быть передано правильно.
### Решение:
Вы можете попробовать изменить логику вашего кода для отправки сообщений следующим образом:
1. Сначала отправьте текст с помощью метода `sendMessage`, а затем отправьте вложения.
```javascript
// Пример отправки сообщения с вложением
await ctx.telegram.sendMessage(this.supportChatId, "Сообщение от пользователя: " + userMessage);
// Затем отправьте файл
await ctx.telegram.sendPhoto(this.supportChatId, {
url: photoUrl,
caption: caption,
});
```
2. Убедитесь, что вы проверяете наличие и правильность всех параметров, передаваемых в `sendPhoto` или другие методы. Необходимо подтвердить, что `photoUrl` корректно указывает на существующий ресурс.
3. Проверьте, что ваши права доступа и настройки бота позволяют ему отправлять сообщения и вложения.
### Пример исправленного кода
```javascript
@On("callback_query") // Обработка нажатия на кнопку
async handleSupportRequest(ctx: MyContext) {
if (ctx.callbackQuery.data === "support_request") {
const userMessage = "Ваше сообщение с техподдержкой"; // сообщение от пользователя
// Отправка текстового сообщения
await ctx.telegram.sendMessage(this.supportChatId, "Сообщение от пользователя: " + userMessage);
// Теперь отправляем вложение
const photoUrl = "https://***orto.ru/images/Logo.png";
await ctx.telegram.sendPhoto(this.supportChatId, photoUrl, { caption: "Все с доставкой" });
}
}
```
Таким образом, вы сможете отправить текстовое сообщение и вложение последовательно, что должно устранить вашу проблему.