1. Для определения последнего сообщения от отправителя в Telegram вы можете использовать API Telegram Bot.
Следующие шаги помогут вам достичь этой цели:
1. Сначала вам нужно зарегистрировать бота и получить его токен от BotFather в Telegram.
2. Установите необходимые зависимости nestjs-telegraf:
```bash
npm install nestjs-telegraf
```
3. Создайте новый файл `telegram-bot.module.ts` для настройки команд и контроллеров вашего бота:
```typescript
import { Module } from '@nestjs/common';
import { TelegrafModule } from 'nestjs-telegraf';
import { MyBot } from './my-bot';
@Module({
imports: [
TelegrafModule.forRoot({
token: 'YOUR_TELEGRAM_BOT_TOKEN',
}),
],
providers: [MyBot],
})
export class TelegramBotModule {}
```
4. Создайте файл `my-bot.ts`, который будет содержать логику обработки сообщений:
```typescript
import { Injectable } from '@nestjs/common';
import { On, TelegrafContext, ContextMessageUpdate } from 'nestjs-telegraf';
@Injectable()
export class MyBot {
@On('message')
async handleNewMessage(ctx: TelegrafContext) {
// Обработка всех входящих сообщений
// ...
// Вы можете проверить отправителя с помощью ctx.from
// Или получить текст сообщения с помощью ctx.message.text
}
}
```
5. Зафиксируйте ваш модуль в `AppModule`:
```typescript
import { Module } from '@nestjs/common';
import { TelegramBotModule } from './telegram-bot.module';
@Module({
imports: [TelegramBotModule],
})
export class AppModule {}
```
6. Запустите ваше приложение Nest с помощью `nest start`.
Теперь вы можете получать все входящие сообщения от отправителя с помощью обработчика `handleNewMessage` в `MyBot`. Вы можете проверить отправителя и определить последнее сообщение от него.
2. Чтобы определить, когда загрузка нескольких файлов завершена в сцене с использованием библиотеки nestjs-telegraf, можно использовать следующий подход:
- В Telegram, когда пользователь отправляет файлы, Telegram отправляет в нескольких сообщениях отдельные объекты `message` для каждого файла. Документация Telegram API подробно описывает этот процесс.
- В вашем `MyBot` нужно создать флаг для отслеживания загрузки файлов.
```typescript
export class MyBot {
private isMultipleFilesUploading = false;
@On('message')
async handleNewMessage(ctx: TelegrafContext) {
// Обработка всех входящих сообщений
// ...
if (ctx.message.document) {
this.isMultipleFilesUploading = true;
// Если это файл, установите флаг isMultipleFilesUploading в true
// Логика для загрузки файлов
// ...
}
if (this.isMultipleFilesUploading && !ctx.message.document) {
this.isMultipleFilesUploading = false;
// После загрузки всех файлов сбрасывается флаг isMultipleFilesUploading в false
// Логика для обработки завершения загрузки файлов
// ...
}
}
}
```
В данном коде `isMultipleFilesUploading` устанавливается в `true`, когда пользователь начинает загрузку файлов, и сбрасывается в `false`, когда все файлы загружены. После установки флага `isMultipleFilesUploading` в `true`, вы можете написать логику для обработки загрузки файлов. После загрузки всех файлов вы можете написать логику для обработки