Telegram Bot Framework written in Swift 5.0 with SwiftNIO network framework
What does it do • Documentation • HOWTO Guides • Usage without Vapor • Usage with Vapor • Demo bots • Requirements • Contributing • Author •
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
main.swift
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()
- Read An official introduction for developers
- Check out bot FAQ
- Official Telegram Bot API
- Create package with Swift Package Manager (SPM)
$ mkdir MyBot
$ cd MyBot
$ swift package init --type executable
- 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"])
]
)
- Resolve dependencies
$ swift package resolve
- Generate XCode project (for macOS only)
$ swift package generate-xcodeproj
- 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
You may also use previous way to create project with Vapor, only include Vapor as dependency in Package.swift
- Install Vapor CLI
$ brew install vapor/tap/vapor
- Create Vapor project with Telegrammer template
$ vapor new MyBot --template=https://github.com/givip/telegram-bot-template
- Generate XCode project
$ vapor xcode
- Add Telegram Token in Environment Variables, so, either create an environment variable:
$ export TELEGRAM_BOT_TOKEN='000000000:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
- 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.
- Ubuntu 14.04 or later with Swift 5.0 or later / macOS with Xcode 10.2 beta 4 or later
- Telegram account and a Telegram App for any platform
- Swift Package Manager (SPM) for dependencies
- Vapor 3 (optionally, for bots with database and other server side stuff)
See CONTRIBUTING.md file.
Givi Pataridze
pataridzegivi@gmail.com @givip