
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:
Tiếng Việt
English
中文
Français
العربية
עברית
Русский
Українська
Bahasa Indonesia
हिंदी
日本語
ภาษาไทย