// src/common/filters/telegram-error.filter.ts
import { ExceptionFilter, Catch, ArgumentsHost, HttpException, Logger } from '@nestjs/common';
import { Response } from 'express';

@Catch()
export class TelegramErrorFilter implements ExceptionFilter {
  private readonly logger = new Logger(TelegramErrorFilter.name);

  catch(exception: any, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const response = ctx.getResponse<Response>();
    const errorMessage = exception?.message || 'Unknown error';

    // اسکیپ کن HTTP GET errors
    if (errorMessage.startsWith('Cannot GET /')) {
      response.status(200).send();
      return;
    }

    if (this.isUserBlockedError(errorMessage)) {
      this.logger.warn(`User blocked: ${errorMessage}`);
      response.status(200).send();
      return;
    }

    this.logger.error(`Telegram Error: ${errorMessage}`);

    const status = exception instanceof HttpException ? exception.getStatus() : 500;
    response.status(status).json({
      message: errorMessage,
      error: 'Internal Server Error',
      statusCode: status
    });
  }

  private isUserBlockedError(message: string): boolean {
    return message.includes('bot was blocked') ||
      message.includes('user is deactivated') ||
      message.includes('chat not found') ||
      message.includes('PEER_ID_INVALID');
  }
}