https://github.com/cooloneofficial/botter
🤖 Crossplatform chatbot framework for Swift supporting Telegram & VK
https://github.com/cooloneofficial/botter
server-side-swift swift swift-nio swift5 telegram telegram-bot vapor vapor-framework vk vk-bot vkontakte
Last synced: about 2 months ago
JSON representation
🤖 Crossplatform chatbot framework for Swift supporting Telegram & VK
- Host: GitHub
- URL: https://github.com/cooloneofficial/botter
- Owner: CoolONEOfficial
- License: mit
- Created: 2020-12-19T13:37:32.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-07-30T12:07:20.000Z (about 2 years ago)
- Last Synced: 2025-04-06T15:53:45.126Z (6 months ago)
- Topics: server-side-swift, swift, swift-nio, swift5, telegram, telegram-bot, vapor, vapor-framework, vk, vk-bot, vkontakte
- Language: Swift
- Homepage: https://cooloneofficial.github.io/PhotoBotSite/
- Size: 198 KB
- Stars: 101
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Botter
Crossplatform Bot Framework written in Swift 5.3 with Vapor framework unifying [Telegrammer](https://github.com/givip/Telegrammer) and [Vkontakter](https://github.com/CoolONEOfficial/Vkontakter)
[](https://github.com/CoolONEOfficial/Botter/actions/workflows/macos.yml)
[](https://github.com/CoolONEOfficial/Botter/actions/workflows/ubuntu.yml)
[](https://github.com/givip/Telegrammer/releases)
[](https://swift.org/download/)
[](https://swift.org/download/)
[](https://github.com/CoolONEOfficial/Vkontakter/blob/master/LICENSE)What does it do
---------------Botter is open-source framework for crossplatform bots developers.
It was built on top of Vapor frameworkThe simplest code of Echo Bot looks like this:
-------------
_main.swift_
```swift
import Foundation
import Botter
import Vkontakter
import Telegrammervar vkSettings = Vkontakter.Bot.Settings(token: vkToken)
let vkPort = Int(Enviroment.get("VK_PORT") ?? "1213")!vkSettings.webhooksConfig = .init(
ip: "0.0.0.0",
url: Enviroment.get("VK_BOT_WEBHOOK_URL")!, // or use openUrl(vkPort)
port: vkPort,
groupId: UInt64(Enviroment.get("VK_GROUP_ID")!)!
)var tgSettings = Telegrammer.Bot.Settings(token: tgToken)
let tgPort = Int(Enviroment.get("TG_PORT") ?? "1212")!
tgSettings.webhooksConfig = .init(
ip: "0.0.0.0",
url: Enviroment.get("TG_WEBHOOK_URL")!, // or use openUrl(tgPort)
port: tgPort
)var settings = Bot.Settings(vk: vkSettings, tg: tgSettings)
let bot = try Bot(settings: settings)
let echoHandler = MessageHandler { (update, context) in
guard case let .message(message) = update.content,
let text = message.text else { return }_ = try bot.getUser(from: update, app: context.app)?.throwingFlatMap { user in
try message.reply(.init(text: "Hello, \(user.firstName ?? "anonymous")"), context: context)
}
}let dispatcher = Dispatcher(bot: bot)
dispatcher.add(handler: echoHandler)_ = try Updater(bot: bot, dispatcher: dispatcher).startWebhooks(serverName: "testserver")
```
Documentation
---------------- Read [our wiki](https://github.com/CoolONEOfficial/Botter/wiki)
- Read [An official documentation of Vapor](https://docs.vapor.codes/4.0/)Requirements
---------------- Ubuntu 16.04 or later with [Swift 5.1 or later](https://swift.org/getting-started/) / macOS with [Xcode 11 or later](https://swift.org/download/)
- Vk account and a Vk App for mobile platform or online (desktop client does not support some chatbot features)
- [Swift Package Manager (SPM)](https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md) for dependencies
- [Vapor 4](https://vapor.codes)Contributing
---------------See [CONTRIBUTING.md](CONTRIBUTING.md) file.
Author
---------------Nikolai Trukhin
[coolone.official@gmail.com](mailto:coolone.official@gmail.com)
[@cooloneofficial](tg://user?id=356008384)