Skip to main content
Deno 2 is finally here 🎉️
Learn more

deno-telegram-bot-api

🦕 wrapper for Telegram bot API

Features

  • Fully typed API follows official Telegram API (with enhancements for “At most one of the optional parameters”-like types)
  • Pooling updates

In progress

  • Webhooks
  • Docs
  • Tests

Examples

import {
  TelegramBot,
  UpdateType,
} from "https://deno.land/x/telegram_bot_api/mod.ts";

const TOKEN = ""; // your token
const bot = new TelegramBot(TOKEN);

// accepts options described in https://core.telegram.org/bots/api#getupdates
// by default pooling timeout is 5s
bot.startPolling();

// UpdateType supports all telegram update types https://core.telegram.org/bots/api#update
// When you pass UpdateType, you will get properly typed callback
bot.on(UpdateType.Message, async ({ message }) => {
  await bot.sendMessage({
    chat_id: message.chat.id,
    text: "Chose a pill",
    reply_markup: {
      inline_keyboard: [
        [
          { text: "🔴", callback_data: "red" },
          { text: "🔵", callback_data: "blue" },
        ],
      ],
    },
  });
});

bot.on(UpdateType.CallbackQuery, ({ callback_query }) => {
  const { id, data, from } = callback_query;
  const text = data === "red" ? "🐰" : "Good morning, Mr. Anderson.";

  bot.sendMessage({
    chat_id: from.id,
    text,
  });

  bot.answerCallbackQuery({
    callback_query_id: id,
  });
});

bot.on(UpdateType.Error, (error) => console.error("Polling error", error));