基于TypeScript的Telegram机器人:从零编写智能助手

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

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

开始课程

引言:为什么选择TypeScript而不是Python?

\n\n

你好,开发者!如果你正在PythonLib上阅读这篇文章,你可能会感到惊讶:“为什么在关于Python的网站上会有一篇关于TypeScript的文章?”答案很简单:IT世界没有边界,优秀的开发者能够超越单一语言的限制。TypeScript不仅仅是“JavaScript的超集”,它是创建可靠、可扩展和可预测应用程序的强大工具。而Telegram机器人是尝试它的理想沙盒。

\n\n

想象一下:你编写代码,IDE提前高亮错误,数据类型防止运行时崩溃,自动补全像瑞士手表一样精准。这不是魔法——这是TypeScript。在本指南中,我们将从零开始创建一个完整的基于TypeScript的Telegram机器人:从在BotFather注册到部署。你将学习如何配置项目、处理命令、发送消息以及使用外部API。

\n\n

准备好了吗?那我们开始吧!

\n\n

为什么选择TypeScript来开发Telegram机器人

\n\n

在深入代码之前,让我们先弄清楚为什么应该使用TypeScript而不是Python来编写机器人,尽管Python似乎是此类任务的“原生”语言。

\n\n
    \n
  • 类型系统——你的朋友。当项目中有10多个命令和20多个处理器时,TypeScript可以防止诸如传递字符串而不是数字之类的愚蠢错误。
  • \n
  • 现代语法。Async/await、解构、模块——所有这些使代码更简洁、更易读。
  • \n
  • Node.js生态系统。大量的库,包括Telegraf(最好的机器人框架)。
  • \n
  • 性能。Node.js是一个事件驱动平台,非常适合高负载的聊天机器人。
  • \n
\n\n

顺便说一下,关于Telegraf:这是一个TypeScript优先的框架,它使与Telegram Bot API的工作变得尽可能简单。我们将使用它。

\n\n

准备工作:需要安装什么

\n\n

开始之前,你需要:

\n\n
# 确保已安装Node.js(18+版本)和npm\nnode -v\nnpm -v\n\n# 创建项目文件夹\nmkdir telegram-bot-ts\ncd telegram-bot-ts\n\n# 初始化项目\nnpm init -y
\n\n

现在安装依赖项:

\n\n
npm install telegraf dotenv\nnpm install -D typescript @types/node ts-node nodemon
\n\n

让我们看看我们安装了哪些内容:

\n
    \n
  • telegraf — 机器人的主要框架。
  • \n
  • dotenv — 用于在.env文件中存储令牌(安全第一)。
  • \n
  • typescript, @types/node, ts-node — 用于编译和运行TS。
  • \n
  • nodemon — 用于在更改时自动重启。
  • \n
\n\n

创建tsconfig.json文件:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "outDir": "./dist"\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules"]\n}
\n\n

以及.env文件(别忘了将其添加到.gitignore中!):

\n\n
BOT_TOKEN=你的_BotFather_令牌
\n\n

注册机器人:认识BotFather

\n\n

这是最简单的步骤。打开Telegram,找到@BotFather并发送命令/newbot。按照说明操作:

\n
    \n
  1. 输入机器人名称(例如,“我的智能助手”)。
  2. \n
  3. 输入用户名(必须以bot结尾,例如my_smart_helper_bot)。
  4. \n
  5. 复制获得的令牌并将其粘贴到.env中。
  6. \n
\n\n

完成!现在你拥有了Telegram API的密钥。

\n\n

项目结构和首次运行

\n\n

创建src文件夹,并在其中创建index.ts文件:

\n\n
// src/index.ts\nimport { Telegraf } from 'telegraf';\nimport { mess                

博客

书籍推荐