用Swift创建Telegram机器人:从构思到部署

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

用Swift创建Telegram机器人:为勇敢者准备的分步指南

\n\n

你好,开发者!如果你认为Telegram机器人只能用Python或JavaScript编写——那我有个消息要告诉你。你因其优雅和性能而钟爱的Swift,同样非常适合服务器端开发。是的,就是你用来编写iOS应用的那个Swift,它也可以在后台运行。在本指南中,我们将使用Vapor(一个强大的Web框架)从零开始创建一个基于Swift的Telegram机器人。这个机器人将能够响应命令、处理消息,甚至发送图片。我们开始吧!

\n\n

为什么用Swift开发Telegram机器人?打破刻板印象

\n\n

在深入代码之前,我们先来探讨一下为什么要用Swift编写机器人。首先,如果你是iOS开发者,你已经熟悉这门语言。你不需要从头学习Python或JS。其次,Swift具有类型安全性和速度。机器人将运行快速且没有意外。第三,Vapor生态系统可以轻松集成数据库、发送通知,甚至解析JSON。是的,Telegram Bot API在Swift上运行得很好。关键在于正确配置环境。

\n\n

步骤1:环境准备

\n\n

我们需要Xcode(至少版本14)、Homebrew和Vapor。如果你已经有Xcode——太好了。如果没有——请从Mac App Store下载。现在安装Vapor:

\n\n
brew install vapor
\n\n

安装后检查版本:

\n\n
vapor --version
\n\n

看到版本号了吗?很好。现在创建一个新项目:

\n\n
vapor new TelegramBotSwift --template web\ncd TelegramBotSwift
\n\n

--template web标志将创建一个服务器应用程序的框架。如果你想要更简洁的版本——使用--template api。我们将采用Web应用程序的路径,以获得更大的灵活性。

\n\n

步骤2:连接Telegram Bot API

\n\n

要与Telegram交互,我们需要一个库。有几个选择:Vapor的TelegramBotSDK、SwiftTelegramBot,或者直接使用原始HTTP请求。我推荐TelegramBotSDK——它稳定且有文档支持。将其添加到Package.swift中:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "TelegramBotSwift",\n    platforms: [.macOS(.v12)],\n    dependencies: [\n        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),\n        .package(url: "https://github.com/vapor/telegram-bot-sdk.git", from: "2.0.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "App",\n            dependencies: [\n                .product(name: "Vapor", package: "vapor"),\n                .product(name: "TelegramBotSDK", package: "telegram-bot-sdk")\n            ]\n        )\n    ]\n)
\n\n

现在获取机器人的令牌。打开Telegram,找到BotFather,输入/newbot,按照指示操作。保存令牌——稍后就会用到。

\n\n

步骤3:用Swift编写第一个机器人

\n\n

打开文件Sources/App/configure.swift。这是入口点。我们来编写基本结构:

\n\n
import Vapor\nimport TelegramBotSDK\n\npublic func configure(_ app: Application) throws {\n    // 从环境变量获取令牌\n    guard let token = Environment.get("TELEGRAM_BOT_TOKEN") else {\n        fatalError("TELEGRAM_BOT_TOKEN未找到")\n    }\n    \n    // 初始化机器人\n    let bot = TelegramBot(token: token, app: app)\n    \n    // /start命令处理器\n    bot.onCommand("start") { context in\n        try await context.sendMessage("你好!我是基于Swift的机器人。有什么可以帮你的吗?")\n    }\n    \n    // /help命令处理器\n    bot.onCommand("help") { context in\n        try await context.sendMessage("可用命令:\\n/start - 开始\\n/help - 帮助\\n/echo [文本] - 重复消息")\n    }\n    \n    // /echo命令处理器\n                

博客

书籍推荐