在Yandex.Cloud中构建Telegram机器人

电报机器人创建

今天,我们将使用现有的材料,Yandex.Cloud中组装一个 Telegram机器人,使用Yandex Cloud Functions(或简称Yandex)和Yandex Object Storage(或Object Storage)。该代码将在Node.js上。但是,有一种情况辣-一个样的组织叫,比方说,RossKomTsenzur(审查制度是由宪法第29条禁止的),不允许互联网服务提供商发送请求到俄罗斯电报API为:https://api.telegram.org/。好吧,我们不会-不,不,不。确实,我们的包里有所谓的网络挂钩-在他们的帮助下,我们不会向特定地址发送请求,而只是将您的请求作为对任何请求的答复发送给我们。也就是说,就像在敖德萨一样-我们以问题来回答问题。因此,Telegram API将不会出现在我们的代码中。

免责声明
- , — .

因此,我们将打造一个能够为我们提供聪明思想的机器人。就像图片中一样: 您可以尝试实际使用-这是名称:@SmartThoughtsBot您是否注意到Alice Skill按钮这是因为漫游器是爱丽丝同名技能的一种“伴侣” ,也就是说,它的功能与爱丽丝(Alice)的技能相同,并且有可能通过相互宣传而和平共处。如何创建技能“聪明的想法”Alice获得技能一文中进行了描述现在(在上述文章发表后进行了一些更改)在智能手机上,此技能将如下所示:

电报机器人聪明的想法



爱丽丝的技巧巧思

机器人创造


我希望本教程对所有人都有用,包括和初学者的“植物学家”。因此,在本节中,我将详细介绍如何在Telegram的基础上创建机器人。对于那些不需要此信息的人,请转至下一部分。

我们打开Telegaram应用程序,调用所有bot的父亲(它们拥有人们喜欢的所有东西)- @BotFather-首先我们给他/ help命令以刷新我们可以做的事情。现在我们将对/ newbot命令感兴趣

创建一个新的机器人

由于已经创建了此处描述的漫游器,出于演示目的,我将在很短的时间内创建另一个漫游器(然后将其删除)。我将其称为DemoHabrBot。名称(用户名),所有电报漫游器都必须以bot这个词结尾,例如:MyCoolBotmy_cool_bot-这是针对漫游器的。但首先,给机器人起一个名字(name)-这是给人们的。名称可以使用任何语言,可以包含空格,不必以bot单词结尾,甚至不必唯一。在此示例中,我将此机器人称为Demo Habr

机器人名称

现在选择机器人名称(用户名即机器人的名称)。我们称之为DemoHabrBot。与漫游器名称name)有关的所有内容都根本不适用于其名称- 用户名(或适用,但恰恰相反)。成功创建唯一的机器人名称后,我们需要复制并保存(以最严格的信任!)屏幕快照中显示的带有红色箭头的令牌。有了它,稍后,我们将Yandex-function安装来自Telegramwebhook 现在,将命令交给所有机器人的父亲:/ mybots,他将向我们显示我们创建的所有机器人的列表。让我们只剩下新鲜出炉的Demo Habr机器人(它是创建来展示如何创建机器人的,但是我们今天将其用于其他演示目的),并考虑使用Smart Thoughts机器人@SmartThoughtsBot)。在机器人列表中按带有他的名字的按钮。

机器人名称



机器人设置

在这里,我们可以配置我们的机器人。通过单击“ 编辑”按钮...,我们将继续编辑该选项。例如,通过点击名称编辑按钮,我们可以改变机器人的名字,说的不是聪明的思考,写妄想观念Botpic是漫游器的头像,必须至少为150 x 150 pxDescription是用户初次启动机器人时看到的简短描述,作为对以下问题的答案:该机器人可以做什么? 关于 -甚至更简短的描述,通过指向机器人(https://t.me/SmartThoughtsBot的链接或在查看有关机器人的信息时发送。

Bot:说明和简要信息

我们只需要配置团队。为此,请单击“ 编辑命令”按钮为了使用户习惯标准化,Telegram建议始终使用两个命令:/ start/ help,如果机器人需要设置,则使用附加命令/ settings。我们的机器人像球一样简单,因此不需要设置。我们编写前两个命令,然后在代码中进行处理。现在,如果用户在输入字段中输入斜线(斜杠:/),将显示用于快速选择的命令列表。一切都如图所示:在左侧-我们通过机器人父设置命令;在右边,这些命令已经对我们的机器人用户可用。

在bot命令中安装和使用

Yandex功能


现在已经创建了我们的机器人,请转到Yandex.Cloud创建一个函数,该函数将执行我们的机器人的代码。如果尚未使用Yandex.Cloud,请阅读Bitrix国家中Alice的资料,然后Yandex函数发送邮件。我非常确定,这两篇相对较小的文章足以使您对这个主题有基本的了解。

因此,在Yandex.Cloud控制台的左侧导航菜单中,选择Cloud Functions,然后单击Create function按钮。我们给她起一个名字,并给她一个简短的描述。

创建Yandex函数

单击创建后几秒钟后,新功能将出现在所有功能列表中。单击她的名字-这将带我们进入功能的概述页面。在这里,您需要启用(On公共功能开关,以便可以从外部(对于Yandex.Cloud)世界使用它,并且LinkIdentifier字段的值对您自己和Telegram以外的所有人都保持秘密,以便您使用功能各种骗子无法打电话。

Yandex功能属性

现在,使用左侧菜单转到“ 功能编辑器”。让我们暂时搁置我们的精明思想,并创建一个最小的模板函数来测试我们的bot的性能。但是,在这种情况下,此功能就是我们的bot。简而言之,现在,在这里,我们将制作一个简单的bot,它将“镜像”(即,发回)用户请求。创建新的电报漫游器时,始终可以使用此模板,以确保与电报的通信正常进行。单击创建文件,将其命名为index.js,然后在在线代码编辑器中,将以下代码粘贴到该文件中:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

在Yandex.Cloud控制台,它应该是这个样子:

Yandex函数上最简单的机器人代码

接下来,略低于我们指定入口点 - index.bot,其中指数是该文件的名称(index.js)和机器人是函数的名称(module.exports.bot)。我们将所有其他字段保留为“原样”,然后在右上角单击“ 创建版本”按钮几秒钟后,将创建此功能的版本。在测试了Webhook之后不久,我们将创建一个新版本-Smart Thoughts

Yandex函数入口点

对象存储


现在我们已经建立了Yandex函数,让我们在控制台Yandeks.Oblaka中创建一个所谓的一个用于存储将在我们的Smart Thoughts机器人中使用的图像文件的存储桶(存储桶,即俄语中的存储桶,绝不是一束鲜花)。在左侧导航菜单中,选择“ 对象存储”,单击“ 创建存储桶”按钮,为其提供一个名称,例如img-bucket,最重要的是,我们可以公开读取对象 -否则Telegram无法看到我们的图片。所有其他字段保持不变。单击创建存储桶按钮

铲斗建立。

之后,所有存储桶的列表可能如下所示(如果这是您唯一的存储桶):

遗愿清单

现在,我建议单击存储桶的名称并在其中创建一个文件夹,以组织用于不同应用程序的图片存储。例如,对于电报机器人Smart Thoughts,我创建了一个名为tg-bot-smart-thoughts的文件夹(什么也没有,我理解此密码)。也创建一些人。

在存储桶中创建文件夹

现在,您可以单击该文件夹的名称,进入该文件夹并上传文件:

将文件上传到存储桶中的文件夹

然后单击该文件名-获取在我们的bot中以及通常在某个地方使用的URL(但不要不必要地发布此URL,因为来自Object存储的流量收费的)

在对象存储中获取文件地址

实际上,这就是全部对象存储现在,当您看到一个在那上传文件的电话时,您将知道该怎么办。

Webhook


现在我们将安装一个Webhook-即当bot收到更新(例如,来自用户的消息)时,带有数据请求将从我们的Telegram服务器发送到我们的Yandex函数。这行代码可以简单地插入浏览器的地址字段中,然后刷新页面(此操作只需执行一次): 只需将{bot_token}替换为我们从bot父亲那里获得的令牌,然后将{webhook_url}替换为URL我们的Yandex函数。一会儿!但是RossKomTsensur禁止俄罗斯联邦的提供者为该地址提供服务https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
https://api.telegram.org恩,那就对了。但是你想出了一些东西。毕竟,例如,您可以在乌克兰,以色列或加拿大向祖母询问有关情况-那里没有“俄罗斯评论”,而且一位神知道没有它的人如何生活。因此,安装Web挂钩时的请求-响应应如下所示:

Webhook安装

测试。它应该是“镜子”。

第一次机器人测试

还有。恭喜-现在,Yandex功能已成为Telegram机器人!

聪明的想法


现在,我们进行聪明的思考。该代码是开放的,位于GitHub上评论非常好,其中只有一百行。像歌剧歌剧女主角一样读它!

Bot Code聪明的想法

克隆项目并安装依赖项:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

index.js文件进行必要的更改(可选;您不能进行任何更改)。创建ZIP --Secondary,文件index.js和文件夹node_modules中,例如,名下smart.zip

机器人Smart Thoughts的ZIP存档

现在转到控制台中的Yandex功能,选择“ ZIP存档”选项卡,单击“ 选择文件”按钮,然后下载我们的smart.zip存档最后,在右上角,单击创建版本按钮

创建机器人的工作版本

几秒钟后,功能更新后,我们将再次测试我们的机器人。现在,他不再是“镜子”,而是发表了精明的想法!

机器人智慧思想的完成

参考文献


GitHub
Yandex Cloud Functions
Yandex对象存储
机器人:为开发人员介绍的Telegram Bot API 代码


结论


今天就这些。其他材料如下。感兴趣的读者可以订阅新出版物的通知。您可以在此站点(下面的“ 订阅”按钮订阅,也可以在Telegram频道 IT教程Zakhar订阅,或者在VKTwitter @mikezaharov 上的同名社区中订阅

甜甜圈


甜甜圈

Source: https://habr.com/ru/post/undefined/


All Articles