// src/common/helpers/safe-telegram.helper.ts
import { Logger } from '@nestjs/common';
import { Context } from 'telegraf';

export class SafeTelegramHelper {
  private static readonly logger = new Logger(SafeTelegramHelper.name);

  static async safeSendMessage(
    ctx: Context,
    text: string,
    options?: any
  ): Promise<boolean> {
    try {
      await ctx.reply(text, options);
      return true;
    } catch (error: any) {
      this.logger.warn(`Failed to send message: ${error.message}`);
      
      if (error.message?.includes('bot was blocked') ||
          error.message?.includes('user is deactivated') ||
          error.message?.includes('chat not found')) {
        this.logger.warn(`User ${ctx.from?.id} has blocked the bot or is deactivated`);
      }
      
      return false;
    }
  }

  static async safeSendVideo(
    ctx: Context,
    video: string,
    options?: any
  ): Promise<boolean> {
    try {
      await ctx.replyWithVideo(video, options);
      return true;
    } catch (error: any) {
      this.logger.warn(`Failed to send video: ${error.message}`);
      return false;
    }
  }

  static async safeEditMessage(
    ctx: Context,
    text: string,
    options?: any
  ): Promise<boolean> {
    try {
      await ctx.editMessageText(text, options);
      return true;
    } catch (error: any) {
      this.logger.warn(`Failed to edit message: ${error.message}`);
      return false;
    }
  }

  static async safeDeleteMessage(ctx: Context): Promise<boolean> {
    try {
      await ctx.deleteMessage();
      return true;
    } catch (error: any) {
      // حذف پیام ممکنه به دلایل مختلف fail بشه، مهم نیست
      return false;
    }
  }

  static async safeAnswerCbQuery(ctx: Context, text?: string): Promise<boolean> {
    try {
      await ctx.answerCbQuery(text);
      return true;
    } catch (error: any) {
      // این خطا معمولا مهم نیست
      return false;
    }
  }
}