Swiftpack.co - Package - givip/Telegrammer

SwiftyBot Banner


Telegram Bot Framework written in Swift 5.0 with SwiftNIO network framework

Build Version Language Platform License

What does it doDocumentationHOWTO GuidesUsage without VaporUsage with VaporDemo botsRequirementsContributingAuthor

What does it do

Telegrammer is open-source framework for Telegram Bots developers. It was built on top of Apple/SwiftNIO which help to demonstrate excellent performance.

SwiftNIO is a cross-platform asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers and clients.

Also Telegrammer use some submodules of Vapor 3 server side swift framework

Join to our Telegram developers chat

Join to our Telegrammer channel on Vapor Discord server

It's easy, from scratch


import Telegrammer

let bot = try! Bot(token: "BOT_TOKEN_HERE")

let commandHandler = CommandHandler(commands: ["/hello"], callback: { (update, _) in
    guard let message = update.message, let user = message.from else { return }
    try! message.reply(text: "Hello \(user.firstName)", from: bot)

let dispatcher = Dispatcher(bot: bot)
dispatcher.add(handler: commandHandler)

_ = try! Updater(bot: bot, dispatcher: dispatcher).startLongpolling().wait()


HOWTO Guides

Usage without Vapor

  1. Create package with Swift Package Manager (SPM)
$ mkdir MyBot
$ cd MyBot
$ swift package init --type executable
  1. Define Dependencies in Package.swift file
let package = Package(
    name: "MyBot",
    dependencies: [
        .package(url: "https://github.com/givip/Telegrammer.git", from: "0.5.0")
    targets: [
        .target( name: "MyBot", dependencies: ["Telegrammer"])
  1. Resolve dependencies
$ swift package resolve
  1. Generate XCode project (for macOS only)
$ swift package generate-xcodeproj
  1. Open in XCode (for macOS only)
$ open MyBot.xcodeproj

You project is ready to create new Telegram Bot.

If you need more help through this steps, you can read How to create a Telegram bot with Telegrammer on Ubuntu / macOS

Usage with Vapor

You may also use previous way to create project with Vapor, only include Vapor as dependency in Package.swift

  1. Install Vapor CLI
$ brew install vapor/tap/vapor
  1. Create Vapor project with Telegrammer template
$ vapor new MyBot --template=https://github.com/givip/telegram-bot-template
  1. Generate XCode project
$ vapor xcode

Demo bots

All sample bots

  1. Add Telegram Token in Environment Variables, so, either create an environment variable:
  1. Run Bot executable scheme or
$ swift run

EchoBot sources Starts/stops with command "/echo", then simply responds with your message

HelloBot sources Says "Hello" to new users in group. Responds with "hello" message on command "/greet"

SchedulerBot sources Demonstrate Jobs Queue scheduling mechanism. Command "/start X" starts repeatable job, wich will send you a message each X seconds. Command "/once X" will send you message once after timeout of X seconds. Command "/stop" stops JobsQueue only for you. Other users continues to receive scheduled messages.

SpellCheckerBot sources Demonstrate how works InlineMenus and Callback handlers. Command "/start" will start bot. Send any english text to bot and it will be checked for mistakes. Bot will propose you some fixes in case of found mistake.





Givi Pataridze

pataridzegivi@gmail.com @givip


Stars: 158
Help us keep the lights on


0.5.4 - Jul 16, 2019

  • Added swift-log
  • Minor improvements and bug fixes

0.5.2 - Mar 19, 2019

0.5.1 - Mar 18, 2019


  • BasicJobQueue, OnceJob, RepeatedJob, DailyJob
  • SchedulerBot example, which demonstrate JobQueue works
  • SpellCheckerBot example, which demonstrate how to use InlineKeyboardButton and CallbackQueryHandler

0.5.0 - Mar 11, 2019

Full support for Telegram Bot API 4.1, compatibility with swift 5.0

0.4.4 - Mar 11, 2019