指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

就在三周前,我才开始沉浸在 IT 世界中。 说真的,三周前我什至都不懂 HTML 语法,而我对编程语言的介绍就以 10 年前的 Pascal 学校课程结束了。 然而,我决定去一个 IT 训练营,在那里孩子们制作一个机器人会很好。 我决定这并不那么困难。

这开始了一段漫长的旅程,其中我:

  • 使用Ubuntu部署了云服务器,
  • 在 GitHub 上注册,
  • 学习了基本的 JavaScript 语法,
  • 阅读大量英语和俄语文章,
  • 终于做了一个机器人
  • 我终于写了这篇文章。

最终结果看起来像这样:

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

我会立即说这是一篇针对初学者的文章 - 只是为了了解如何从头开始做基本的事情。

而且 - 对于高级程序员 - 只是为了让他们笑一下。

1.如何用JS编写代码?

我明白至少值得首先了解该语言的语法。 选择落在了 JavaScript 上,因为我的下一步是在 ReactNative 中创建一个应用程序。 我开始于 当然 在 Codecademy 上,我非常高兴。 前 7 天免费。 真实的项目。 我建议。 完成大约花了25个小时。 事实上,并非所有这些都有用。 这就是课程的结构和第一个部分的详细结构。

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

2. 如何注册机器人?

这在一开始对我帮助很大 这篇文章 来自某个Archakov的博客。 他从头开始咀嚼。 但最重要的是有注册机器人的说明。 我无法写得更好,因为这是最简单的部分,所以我只写要点。 您需要创建一个机器人并获取其 API。 这是通过另一个机器人 - @BotFather 完成的。 在 telegram 上找到他,给他写信,按照简单的路径获取(保存!)API 密钥(这是一组数字和字母)。 后来就派上用场了。

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

3. 机器人代码是什么样的?

研究了很长时间的文章后,我意识到使用某种库(模块格式的第三方代码)是值得的,这样就不必担心学习 Telegram API 和从头开始创建大段代码。 我找到了框架 Telegraf,它需要以某种方式连接到使用npm或yarn的东西。 这就是我当时对机器人部署的大致理解。 在这里笑。 我不会被冒犯。 在随后创建机器人的过程中,页面底部的示例对我帮助最大:

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

3.如何用100卢布创建自己的云服务器

经过大量搜索,我意识到上图中的“npm”命令指的是命令行。 命令行无处不在,但为了能够执行它,您需要安装 NodePackageManager。 问题是我正在使用 ChromeOS 的 PixelBook 上进行编程。 我将在这里跳过一大块关于我如何学习 Linux 的内容——对于大多数人来说,它是空的并且没有必要。 如果您有 Windows 或 MacBook,那么您就已经拥有了控制台。

简而言之,我通过 Crostini 安装了 Linux。

然而,在这个过程中,我意识到,为了让机器人持续工作(而不仅仅是当我的计算机打开时),我需要一个云服务器。 我选择了 vscale.io 我花了100卢布买了最便宜的Ubuntu服务器(见图)。

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

4. 如何准备服务器来运行机器人

之后,我意识到我需要在服务器上创建某种文件夹,将带有代码文本的文件放入其中。 为此,在控制台中(通过“打开控制台”按钮直接在网站上运行),我输入

mkdir bot

bot - 这成为我的文件夹的名称。 之后,我安装了 npm 和 Node.js,这将允许我从具有 *.js 分辨率的文件运行代码

sudo apt update
sudo apt install nodejs
sudo apt install npm

我强烈建议在此阶段通过控制台设置与服务器的连接。 这里 指令 这将允许您直接通过计算机的控制台使用服务器。

5. 如何为您的第一个机器人编写代码。

但现在这对我来说只是一个发现。 任何程序都只是文本行。 它们可以插入到任何地方,用所需的扩展名保存,仅此而已。 你很美丽。 我用了 原子,但实际上,您可以在标准记事本中书写。 最主要的是稍后将文件保存为所需的扩展名。 这就像在 Word 中编写文本并保存一样。

我创建了一个新文件,在其中插入了 telegraf 页面上示例中的代码,并将其保存在 index.js 文件中(通常不需要以这种方式命名文件,但这是惯例)。 重要提示 - 请插入第二段中的 API 密钥,而不是 BOT_TOKEN。

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()

6.如何通过github上传代码到服务器

现在我需要以某种方式将此代码上传到服务器并运行它。 这对我来说成了一个挑战。 结果,经过多次磨难,我意识到在 github 上创建一个允许您使用控制台中的命令更新代码的文件会更容易。 我注册了一个帐户 github上 并做了 新项目,我上传文件的地方。 之后,我需要弄清楚如何设置将文件从我的帐户(打开!)上传到服务器的 bot 文件夹中(如果你突然离开它,只需写 cd bot )。

7.如何通过github上传文件到服务器第2部分

我需要在服务器上安装一个程序来从 git 下载文件。 我通过在控制台中输入来在服务器上安装 git

apt-get install git

之后我需要配置文件上传。 为此,我在命令行中输入

git clone git://github.com/b0tank/bot.git bot

结果,项目中的所有内容都被上传到服务器。 此阶段的错误是我实质上在现有的 bot 文件夹中创建了第二个文件夹。 文件的地址类似于 */bot/bot/index.js

我决定忽略这个问题。

要加载我们在第一行代码中请求的 telegraf 库,请在控制台中键入命令。

npm install telegraf

8. 如何启动机器人

为此,在包含文件的文件夹中(要通过控制台从一个文件夹移动到另一个文件夹,请运行 format 命令 cd bot 为了确保您位于所需的位置,您可以输入一个命令,该命令将在控制台中显示所有文件和文件夹 ls -a

首先,我进入控制台

node index.js

如果没有错误,一切都很好,机器人正在工作。 在电报上寻找他。 如果有错误,请运用第 1 点中的知识。

9. 如何在后台运行机器人

很快您就会意识到,只有当您坐在控制台中时,该机器人才能工作。 为了解决这个问题我使用了命令

screen

之后,将出现一个带有一些文本的屏幕。 这意味着一切都很好。 您位于云服务器上的虚拟服务器上。 为了更好地理解这一切是如何运作的 - 这是文章。 只需转到您的文件夹并输入命令即可启动机器人

node index.js

10. 机器人如何工作以及如何扩展其功能

我们的示例机器人可以做什么? 他可以

bot.start((ctx) => ctx.reply('Welcome!'))

说“欢迎!” 在开始时(尝试更改文本)

bot.help((ctx) => ctx.reply('Send me a sticker'))

响应标准 /help 命令,发送消息“给我发送贴纸”

bot.on('sticker', (ctx) => ctx.reply(''))

发送批准以响应贴纸

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

如果他们给他写“嗨”,请回答“嘿”
机器人.launch()

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

如果你看一下代码 github上,那么你很快就会明白我离这个功能还没有太远。 主动使用的是函数 ctx.replyWithPhoto 它允许您发送指定的照片或 gif 来响应特定的文本。

代码的很大一部分是由 11 至 13 岁的儿童编写的,我向他们授予了对机器人的访问权限。 他们输入了他们的用户案例。 我认为很容易看出哪一部分是他们制作的。

例如,消息“Jake”将收到带有卡通探险活宝中著名角色的 GIF。

指南:如何为编程初学者使用 JS 制作一个简单的 Telegram 机器人

要进一步开发机器人,您需要连接键盘,请参阅示例,例如,

11. 如何更新代码并重启机器人

不要忘记,你不仅需要更新github上的代码,还需要更新服务器上的代码。 这很容易做到 - 停止机器人(按 ctrl+c),

- 在目标文件夹中进入控制台, git pull
— 我们使用以下命令再次启动机器人 node index.js

结束

该文件中描述的许多内容对于高级程序员来说都是非常明显的。 然而,当我自己试图一举跨越鸿沟进入机器人世界时,我真的很怀念这样一个指引。 该指南不会错过对任何 IT 专家来说显而易见且简单的事情。

将来,我计划写一篇关于如何以相同风格在 ReactNative 上制作第一个应用程序的文章,订阅!

来源: habr.com

添加评论