npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-telegram-sockets

v1.1.7

Published

A customized version of node-telegram-bot-api with socket-like event handling.

Readme

Node Telegram Sockets

Node Telegram Sockets adalah modifikasi kustom dari library node-telegram-bot-api yang populer, dirancang untuk menyediakan interaksi bot Telegram yang lebih intuitif dengan penanganan event bergaya 'socket'. Library ini mempertahankan fungsionalitas inti dari node-telegram-bot-api sambil memperkenalkan alias yang memudahkan pengembang yang terbiasa dengan paradigma event-driven atau socket.

Fitur Utama

  • Kompatibilitas Penuh: Membangun di atas node-telegram-bot-api, memastikan kompatibilitas dengan semua fitur dan metode API Telegram Bot.
  • Event Handling Bergaya Socket: Memperkenalkan alias connect dan send untuk metode on dan emit EventEmitter, membuat penanganan event lebih familiar bagi pengembang socket.
  • Rebranding: Nama dan namespace internal telah diperbarui menjadi node-telegram-sockets untuk mencerminkan fokus baru.
  • Fleksibel: Mendukung polling dan webhook untuk menerima pembaruan dari Telegram.

Instalasi

Untuk menginstal Node Telegram Sockets, Anda dapat menggunakan npm:

npm install node-telegram-sockets

Penggunaan

Berikut adalah contoh dasar bagaimana menggunakan Node Telegram Sockets:

const TelegramSockets = require("node-telegram-sockets");

// Ganti dengan token bot Telegram Anda
const token = "YOUR_TELEGRAM_BOT_TOKEN";

// Buat instance bot
const bot = new TelegramSockets(token, { polling: true });

// Menggunakan alias 'connect' untuk mendengarkan pesan
bot.connect("message", (msg) => {
  const chatId = msg.chat.id;
  bot.sendMessage(chatId, "Halo dari Node Telegram Sockets!");
});

// Contoh penggunaan alias 'send' (untuk event kustom)
bot.connect("custom_event", (data) => {
  console.log("Menerima event kustom:", data);
});

// Memicu event kustom
bot.send("custom_event", { user: "John Doe", action: "test" });

// Mendengarkan event 'socket:message' yang baru
bot.connect("socket:message", ({ data, metadata }) => {
  console.log("Menerima pesan melalui socket-like event:", data.text);
  // Anda bisa memproses data dan metadata di sini
});

// Contoh penanganan perintah
bot.onText(/\/start/, (msg) => {
  bot.sendMessage(msg.chat.id, "Selamat datang!\nKetik /echo [pesan Anda] untuk mengulang pesan.");
});

bot.onText(/\/echo (.+)/, (msg, match) => {
  const chatId = msg.chat.id;
  const resp = match[1];
  bot.sendMessage(chatId, resp);
});

// Penanganan error
bot.on("polling_error", (error) => {
  console.error("Polling error:", error);
});

Perubahan dari node-telegram-bot-api

  • Kelas utama telah diganti namanya dari TelegramBot menjadi TelegramSockets.
  • Namespace debug telah diperbarui dari node-telegram-bot-api menjadi node-telegram-sockets.
  • Alias connect(event, listener) ditambahkan sebagai pengganti on(event, listener).
  • Alias send(event, ...args) ditambahkan sebagai pengganti emit(event, ...args).
  • Event baru socket:message ditambahkan, yang memancarkan objek { data, metadata } untuk setiap pesan yang diterima, memungkinkan penanganan event yang lebih terstruktur.
  • Sistem Middleware: Mendukung penggunaan middleware via .use((msg, next) => { ... }).
  • Manajemen Sesi: Akses sesi pengguna langsung melalui msg.session.
  • Auto-Retry Rate Limit: Menangani error 429 (Too Many Requests) secara otomatis jika opsi rateLimit: true diaktifkan.
  • Media Helper: Mengirim album foto dengan mudah menggunakan .sendAlbum(chatId, [path1, path2]).
  • Smart Broadcast System: Mengirim pesan massal dengan antrean otomatis dan laporan status.
  • Fluent Keyboard Builder: Membuat tombol dengan gaya, emoji kustom, dan alur kerja yang lancar.

Fitur Lanjutan

1. Middleware

Anda dapat menambahkan fungsi yang akan dijalankan sebelum event handler utama:

bot.use((msg, next) => {
  console.log(`Pesan dari ${msg.from.username}: ${msg.text}`);
  // Lanjutkan ke middleware berikutnya atau handler utama
  next();
});

2. Session Management

Setiap pesan secara otomatis memiliki objek sesi yang persisten di memori:

bot.connect("message", (msg) => {
  if (!msg.session.counter) msg.session.counter = 0;
  msg.session.counter++;
  bot.sendMessage(msg.chat.id, `Anda telah mengirim ${msg.session.counter} pesan.`);
});

3. Auto-Retry Rate Limit

Aktifkan penanganan batas permintaan Telegram secara otomatis:

const bot = new TelegramSockets(token, { 
  polling: true,
  rateLimit: true // Aktifkan fitur ini
});

4. Send Album Helper

Kirim beberapa foto sekaligus dengan satu baris kode:

bot.sendAlbum(chatId, [
  './assets/photo1.jpg',
  './assets/photo2.png'
]);

5. Smart Broadcast System

Kirim pesan ke banyak pengguna sekaligus dengan aman:

const userIds = [123456, 789012, 345678];
bot.broadcast(userIds, "Halo semuanya! Ini adalah pesan siaran.")
  .then(report => {
    console.log(`Total: ${report.total}`);
    console.log(`Berhasil: ${report.success}`);
    console.log(`Diblokir: ${report.blocked}`);
    console.log(`Gagal: ${report.failed}`);
  });

6. Fluent Keyboard Builder

Membuat tombol inline dengan gaya dan emoji kustom jadi lebih mudah:

const keyboard = bot.keyboard('inline')
  .url("Owner Script", "https://t.me/xrelly", { 
    style: "danger", 
    icon_custom_emoji_id: "6213063926200933195" 
  })
  .url("Channel Owner", "https://t.me/jspacker", { 
    style: "success", 
    icon_custom_emoji_id: "5328034993727889277" 
  })
  .row()
  .callback("Bantuan", "help_data", { style: "primary" })
  .build();

bot.sendMessage(chatId, "Pilih menu:", { reply_markup: keyboard });

7. Penggunaan rich_message pada library

Membuat menu pada bot kalian menjadi lebih bagus dan bergaya.

Mendengarkan event rich_message :

bot.on('rich_message', (msg) => {
    console.log('Get rich_message:', msg.rich_message);
});

Cara kirim rich_message

const richMessage = {
    blocks: [
        {
            type: "heading",
            text: "Hello world!!!",
            size: 1
        }
    ]
}

bot.sendRichMessage(chatId, richMessage);

Kontribusi

Kami menyambut kontribusi! Jika Anda memiliki ide untuk fitur baru, perbaikan bug, atau peningkatan, silakan buka isu atau kirim pull request di repositori GitHub.

Lisensi

Library ini dilisensikan di bawah Lisensi MIT. Lihat file LICENSE.md untuk detail lebih lanjut.