Search packages, repositories and app categories

GitHub repositoryKaikyuLotus/dart-telegram-bot

dart-telegram-bot

A simple pure wrapper for Telegram bot API

dart-telegram-bot project cover
Stars
29
Forks
8
Last push (UTC)
Jan 2, 2025
Project status
Active

Original README

English project snapshot. Visit GitHub for the latest content.

Dart Telegram Bot Dart CI/CD

Dart Telegram Bot is a Dart wrapper for Telegram bot API.
It is compatible with Native, Flutter and JS.

Bot API Version Dart Version

Using Dart Telegram Bot is straightforward, here's an example echo bot:

import 'package:dart_telegram_bot/dart_telegram_bot.dart';
import 'package:dart_telegram_bot/telegram_entities.dart';

void main() {
  Bot(
    // Insert your bot token here
    token: 'BOT_TOKEN',
    // Once the bot is ready this function will be called
    // You can start the bot here
    onReady: (bot) => bot.start(clean: true),
    // Register a new callback for new updates
  ).onUpdate((bot, update) async {
    // Send a message to the update chat with the received message
    bot.sendMessage(ChatID(update.message!.chat.id), update.message!.text!);
  });
}

Bot start may fail when bot token is invalid or with network issues.
To handle such cases follow the next example:

void main() {
  Bot(
    token: 'BOT_TOKEN',
    onReady: (bot) => bot.start(clean: true),
    // Handle start failure
    onStartFailed: (bot, e, s) => print('Start failed'),
  );
}

Also, you may want to disable or allow only certain update types.
To do so follow the next example:

void main() {
  Bot(
    token: 'BOT_TOKEN',
    onReady: (bot) => bot.start(clean: true),
    // Either allow all types but some
    allowedUpdates: UpdateType.allBut([UpdateType.channelPost]),
    // OR allow only a list of types
    allowedUpdates: [UpdateType.message, UpdateType.editedMessage],
  );
}

Dart Telegram Bot also supports a more OOP approach. The following example is still an echo bot, this time with OOP approach:

class MyBot extends Bot {

  MyBot() : super(token: 'BOT_TOKEN') {
    onUpdate(updateHandler);
  }

  @override
  Future onReady(Bot bot) => bot.start(clean: true);

  @override
  Future onStartFailed(Bot bot, Object err, StackTrace st) async {
    print('Bot failed to start: $err');
  }

  Future updateHandler(Bot bot, Update update) async {
    bot.sendMessage(ChatID(update.message!.chat.id), update.message!.text!);
  }
}

Written by Kaikyu Lotus (Telegram)

Kaikyu GitHub avatar
GitHub author

Kaikyu ↗

Weeb developer

Italy
LanguagesDart

Categories

Dependencies used

Dependency list 4 items

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗