Service Aplikasi Node.js untuk memproses pengiriman pesan ke telegram personal ataupun grup (bisa ke topik/thread juga) menggunakan redis untuk cache dan queue dan BullMQ Worker.
Telegram Bot Service adalah REST API berbasis Node.js yang menerima request kemudia mengirimkan hasil teks ke Telegram secara otomatis.
Aplikasi ini dirancang untuk:
- Output teks polos aman untuk Telegram
- Pemrosesan asynchronous (queue-based)
- Mudah diintegrasikan dengan sistem lain (PHP, Laravel, Go, Pytho, Node, dll)
Dapat proses prompt menggunakan Google Gemini AI dan mengirimkan hasil respons langsung ke Telegram melalui Bot API. Cocok untuk kebutuhan laporan otomatis, notifikasi presensi, ringkasan data, dan pesan AI berbasis template.
- Menerima request API berbentuk JSON
- Validasi request menggunakan schema
- Mengirim prompt dan payload ke Google Gemini AI
- Memproses hasil respons AI
- Mengirim hasil teks ke Telegram Bot
- Mendukung job queue (Bull + Redis)
- Logging error dan retry otomatis
Backend
- Node.js
- Express.js
- Axios
AI
- Google Gemini API
Queue & Cache
- Bull Queue
- Redis
Messaging
- Telegram Bot API
Deployment
- Docker
- Docker Compose (opsional)
- PM2 (non-docker)
git clone https://github.com/username/node-gemini-telegram.git
cd node-gemini-telegramnpm installSalin file .env-example menjadi .env
cp .env-example .envKemudian sesuaikan isinya
Jalankan Redis Server
redis-servernpm run devJalankan AI worker
npm run ai-workerJalankan Send worker
npm run send-workerJalankan Redis Server
redis-servernpm startJalankan AI worker
npm start ai-workerJalankan Send worker
npm start send-workerhttp://localhost:3000POST /api/ai/ask
Header
Content-Type: application/json
x-secret-key: SUPER_SECRET_KEYBody
{
"telegram_bot_key": "BOT_TOKEN",
"telegram_receiver_id": "CHAT_ID",
"gemini_api_key": "GEMINI_API_KEY",
"prompt": "Prompt instruksi AI",
"payloads": {}
"message_thread_id": "isi dengan id thread di grup (INTEGER) atau NULL jika tidak kirim ke topik/thread"
}POST /api/send/message
Header
Content-Type: application/json
x-secret-key: SUPER_SECRET_KEYBody
{
"telegram_bot_key": "BOT_TOKEN",
"telegram_receiver_id": "CHAT_ID",
"text": "PESAN ANDA",
"message_thread_id": "isi dengan id thread di grup (INTEGER) atau NULL jika tidak kirim ke topik/thread"
}npm install -g pm2redis-serverpm2 start src/index.ts --name telegram-sender
pm2 start src/worker/ai.worker.ts --name ai-worker
pm2 start src/worker/send.worker.ts --name send-workerpm2 save
pm2 startuppm2 listHarus terlihat:
telegram-sender online
ai-worker online
send-worker onlinedocker-compose.ymlservices:
api:
build:
command: node dist/server.js
ports:
- "3000:3000"
env_file:
- .env
depends_on:
- redis
ai-worker:
build: .
command: node dist/worker/ai.worker.js
env_file:
- .env
depends_on:
- redis
send-worker:
build: .
command: node dist/worker/send.worker.js
env_file:
- .env
depends_on:
- redis
redis:
image: redis:7-alpine
ports:
- "6379:6379"
docker-compose up -d-
Jangan expose gemini_api_key dan telegram_bot_key ke client publik
-
Gunakan x-secret-key untuk proteksi API
-
Disarankan simpan API key di server (database / env)
-
Batasi rate request jika digunakan publik
-
Laporan presensi harian ke Telegram
-
Notifikasi otomatis berbasis data
-
AI assistant internal perusahaan
-
Summary laporan tanpa UI
MIT License
Dikembangkan untuk kebutuhan otomasi dan AI messaging internal.