PaperPlane

Just a Telegram Library for Dart. A package to interact with the official

Telegram Bot API.

Dart Version Build Status Bot API Nebulino

Disclaimer

I'm doing it just for fun, so... use at your own risk.

I hope it will become something great.

^-^

Usage

First build the .g files for Serializable (if you clone the repo):

pub run build_runner build

A simple usage example:

import 'dart:io' as io;
import 'package:paperplane/paperplane.dart';

void main() {
  var token = 'Just A Token';
  
  var bot = PaperPlane.createBot(token);
  bot.engine();

  bot.startPolling();
  
  // Work with events...
  bot
    .onMessage()
    .where((message) => message.text == 'owo')
    .listen((message) => message.replyText(text: 'uwu'));
 
  // Work with updates and directly with methods...
  var api = bot.api;
  var updater = bot.updater.onUpdate();
  
  updater
    .where((onUpdate) => onUpdate.message.text == 'animate')
    .listen((update) => api.sendAnimation(
      chat_id: message.chat.id,
      animation: Luggage.withFile(file: io.File('./files/gifs/bunny_girl.gif'))));
}

Get PaperPlane

Add PaperPlane dependency on pubspec.yaml:

From GitHub:

dependencies:
  paperplane:
    git: https://github.com/Nebulino/PaperPlane.git
      ref: branch-name

From pub.dev:

dependencies:
  paperplane: ^0.6.5

Features and bugs

All API up-to v4.8 are supported

Implemented a base for a future solid implementation of Long Polling

Still, the Webhook needs more tests.

You can use Long Polling mode for now.

I have created all Telegram API Classes for each Telegram Types.

Please file feature requests and bugs at the issue tracker.

Libraries

paperplane
PaperPlane Library. Import this if you want to do a simple bot.
paperplane_exceptions
PaperPlane's exceptions Library. It helps to manage different type of exception inside my library.
paperplane_helpers
PaperPlane Helpers Library. Import this to use some helpers.
telegram
Telegram Library. It groups all the Telegram Api objects. All objects used in the Bot API responses are represented as JSON-objects. It is safe to use 32-bit signed integers for storing all Integer fields unless otherwise noted. Optional fields may be not returned when irrelevant.