Avatar
tờ ròm Tôi yêu Việt Nam

worker.js

const BOT_TOKEN = '...'; // Thay thế bằng token bot của bạn
const CHAT_ID = '...'; // Thay thế bằng ID channel/chat Telegram của bạn

addEventListener('fetch', event => {
    const url = new URL(event.request.url);
    
    if (url.pathname.includes('/upload')) {
        event.respondWith(handleUploadRequest(event.request));
    } else if (url.pathname.includes('/download')) {
        event.respondWith(handleDownloadRequest(event.request));
    } else {
        event.respondWith(new Response('404 Not Found', { status: 404 }));
    }
});

async function handleUploadRequest(request) {
    const headers = {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
        'Access-Control-Allow-Headers': 'Content-Type'
    };

    try {
        // Tạo đối tượng FormData với tài liệu cần gửi
        const document = await request.formData();
        const formData = new FormData();
        formData.append('chat_id', CHAT_ID);
        formData.append('disable_content_type_detection', 'true');
        formData.append('document', document.get('document'));

        // Gửi tài liệu tới API của bot Telegram
        const response = await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/sendDocument`, {
            method: 'POST',
            body: formData
        });

        // Trích xuất file_id từ phản hồi
        const responseData = await response.json();
        const fileId = responseData.result.document.file_id;

        // Trả về file_id dưới dạng phản hồi JSON
        return new Response(JSON.stringify({
            file_id: fileId
        }), {
            headers: headers,
        });
    } catch (error) {
        return new Response(JSON.stringify({
            error: error.message
        }), {
            status: 500,
            headers: headers,
        });
    }
}

async function handleDownloadRequest(request) {
  const urlParts = request.url.split('/'); // Tách đường dẫn URL
  const fileId = urlParts[urlParts.length - 2]; // Lấy `file_id`
  const fileName = urlParts[urlParts.length - 1]; // Lấy `file_name`

  // Gửi yêu cầu GET đến API của Telegram
  const telegramResponse = await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/getFile?file_id=${fileId}`);
  const telegramData = await telegramResponse.json();
  const filePath = telegramData.result.file_path;

  // Tạo URL file từ đường dẫn được trả về
  const fileUrl = `https://api.telegram.org/file/bot${BOT_TOKEN}/${filePath}`;

  // Tạo yêu cầu GET mới đến URL file và trả về response
  const fileResponse = await fetch(fileUrl);
  return new Response(await fileResponse.blob(), {
      headers: {
          'Content-Disposition': `attachment; filename="${fileName}"`
      }
  });
}
worker.js (đang đọc)
  • BBcode:
  • Markdown: