Using Telegram API as a Free Unlimited Database for Chat Apps
ছোট বা মাঝারি আকারের ওয়েব অ্যাপ্লিকেশন বা কাস্টম চ্যাট অ্যাপের জন্য ক্লাউড ডাটাবেজ (যেমন Firebase, MongoDB Atlas) ব্যবহার করতে গেলে নির্দিষ্ট কোটা শেষ হওয়ার পর চড়া ফি গুণতে হয়। ফ্রিল্যান্সিং প্রোজেক্ট বা পার্সোনাল প্যাক বিল্ডে এই কস্ট অপ্টিমাইজেশন করা বেশ মাথাব্যথার কারণ।
তবে আপনি কি জানেন, একটু ট্রিক খাটিয়ে Telegram Bot API-কে একটি সম্পূর্ণ ফ্রি, ক্লাউড-বেইজড আনলিমিটেড NoSQL ডাটাবেজ এবং ড্রাইভ স্টোরেজ হিসেবে ব্যবহার করা সম্ভব? আজকের আর্টিকেলে আমরা এই গ্রে-হ্যাট টেকনিক্যাল আর্কিটেকচার নিয়ে আলোচনা করবো।
১. মেকানিজম: কীভাবে এটি কাজ করে?
টেলিগ্রাম তাদের প্রতিটি মেসেজে টেক্সট, অবজেক্ট এবং ফাইল (সর্বোচ্চ ২ জিবি প্রতি ফাইল) লাইফটাইম ফ্রিতে সেভ রাখার অনুমতি দেয়। আমরা যদি আমাদের অ্যাপ্লিকেশনের ইউজার ডেটা বা মেসেজ হিস্ট্রিকে JSON String-এ রূপান্তর করে একটি সিক্রেট টেলিগ্রাম চ্যানেলে বটের মাধ্যমে পুশ করি, তবে প্রতিটি মেসেজের একটি ইউনিক message_id তৈরি হবে। এই আইডি-টিই হবে আমাদের প্রাইমারি কি (Primary Key)!
২. ব্যাকএন্ড ইনফ্রাস্ট্রাকচার রেডি করা
এই সেটআপের জন্য প্রথমে আমাদের দুটি জিনিস লাগবে:
- Bot Token: টেলিগ্রামে
@BotFather-এ গিয়ে একটি নতুন বট বানিয়ে আপনার সিক্রেট এপিআই টোকেনটি কপি করে নিন। - Chat ID: একটি প্রাইভেট চ্যানেল বা গ্রুপ তৈরি করুন এবং আপনার বটটিকে সেখানে অ্যাডমিন (Admin) হিসেবে যুক্ত করুন। এরপর চ্যানেলের কাস্টম Chat ID (যেমন:
-100xxxxxxxxx) সংগ্রহ করুন।
৩. ডেটা ইনসার্ট করার কোড ট্রিক (Node.js উদাহরণ)
এখন আপনার অ্যাপ্লিকেশন ব্যাকএন্ড থেকে কীভাবে টেলিগ্রাম ডাটাবেজে ডেটা রাইট (Write) করবেন, তার একটি লাইটওয়েট মেথড নিচে দেওয়া হলো:
const axios = require('axios');
const BOT_TOKEN = 'YOUR_BOT_TOKEN';
const CHAT_ID = 'YOUR_CHANNEL_CHAT_ID';
async function insertData(collection, payload) {
// ডেটাকে একটি স্ট্রাকচার্ড নো-এসকিউএল ফরম্যাটে সাজানো
const databaseRecord = {
table: collection,
timestamp: new Date().toISOString(),
data: payload
};
const telegramUrl = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;
try {
const response = await axios.post(telegramUrl, {
chat_id: CHAT_ID,
text: JSON.stringify(databaseRecord, null, 2),
parse_mode: 'Markdown'
});
// রিটার্ন হওয়া মেসেজ আইডিটিই ডাটাবেজের ডক আইডি
return response.data.result.message_id;
} catch (error) {
console.error("Database Write Error:", error);
}
}
// ব্যবহার বিধি:
insertData('users', { name: 'Abdullah', role: 'Founder', status: 'Active' })
.then(id => console.log(`Data Saved successfully! Document ID: ${id}`));
৪. ডেটা রিড (Read) বা কুয়েরি করার উপায়
ডেটা রিড করার জন্য আপনি দুটি মেথড ফলো করতে পারেন। প্রথমত, যদি আপনার কাছে সুনির্দিষ্ট message_id থাকে, তবে টেলিগ্রামের forwardMessage বা গেট মেথড দিয়ে সরাসরি রিকোয়েস্ট কল করতে পারেন। দ্বিতীয়ত, একটি লাইভ চ্যাট অ্যাপের জন্য আপনি ব্যাকএন্ডে Webhooks সেট করে রাখতে পারেন, ফলে চ্যানেলে কোনো নতুন ডেটা বা ফাইল আপডেট হওয়া মাত্রই টেলিগ্রাম আপনার কাস্টম সার্ভার এন্ডপয়েন্টে ইনস্ট্যান্ট ডেটা পুশ করে দেবে।
প্রো-টিপস ও সীমাবদ্ধতা: এই হ্যাকটি ছোট প্রোজেক্ট এবং আনলিমিটেড স্টোরেজের জন্য অমৃত হলেও, কমপ্লেক্স রিলেশনাল কুয়েরি (যেমন SQL Join) বা হাই-স্পিড সার্চিংয়ের জন্য এটি উপযুক্ত নয়। তাছাড়া টেলিগ্রাম এপিআই-এর প্রতি মিনিটে ৩০টি মেসেজের একটি রেট-লিমিট আছে, যা মিডিয়াম ট্রাফিকের জন্য যথেষ্ট।