使用Yandex云的无服务器电报机器人

你好!我叫Viktor Pavlov,我是俄罗斯一所大学的计算机科学实习生老师。因此,对于学生来说,我们正在尝试将最新技术引入教育过程,“无服务器”机器人就是其中之一。



本文的灵感来自于学生程序员之间资源的普及,但是对于新手程序员,我将尝试尽可能简单地讲述一切。因此,我们将创建一个简单的Echo机器人作为模板进行各种修改。



PS另外,本文的灵感来自缺乏Python教程,而Nodejs上有一个很好的教程



链接到Yandex Cloud Functions

文档,链接到Telegram API文档






步骤1:注册并登录到Yandex云平台



注意
. , Serverless VPS. «» .



步骤2:输入功能。在这里,您需要在“管理控制台”的左侧面板中选择“云功能”。



图片



步骤3:单击按钮图片然后,我们设置有意义的函数名称和描述。



忠告
< >-<>-<>.



telegram-study-bot, weather-get-api ..



. language=python3.7, lib=telebot



步骤4:选择“编辑器”选项卡



图片



。然后,我们将打开一个窗口,用于管理功能代码。在这里我们可以选择:



1)“运行时”,在我们的例子中是python3.7



关于依赖
preview , ( 02.10.2020 )



2)“方式”负责如何将代码传递给函数。在本文中,我们将使用简单的代码编辑器作为最简单的示例。



3)“入口点”负责哪个函数将接收请求,并将其作为我们函数的动作的开始,稍后我们将对其进行指示。



4)接下来是“参数”,我建议保留它们不变。



如果要使用授权
, , .



步骤5:确保设置了正确的“运行时”和“方法”,



图片



然后单击“创建文件”,将其命名为main.py。



步骤6:这将打开代码编辑器,我们可以在其中创建请求处理程序函数。让我们称之为处理程序并插入以下代码:



import json

def handler(event, context):
    body = json.loads(event['body'])
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps({
            'method': 'sendMessage',
            'chat_id': body['message']['chat']['id'],
            'text':  body['message']['text']
        }),
        'isBase64Encoded': False
    }


解析代码
«json», body json- python dict.



handler , , . .



body Python json.loads body .



, webhook telegram , body, json.dumps, .



注意!!!



在“入口点”中,需要将此函数指定为脚本的开头。我们编写main.handler应该是这样的:



图片



然后我们单击“创建版本”,然后等待,直到转移到“概述”选项卡。



步骤7:在这里,我们对“链接到呼叫”和开关“公共功能”感兴趣。我们按一下开关,记住通话链接在哪里。



图片



步骤8创建一个电报漫游器并复制其令牌。您需要创建一个查询,例如:



https://api.telegram.org/bot<bot_token>/setWebHook?url=<webhook_url>


其中bot_token是您的电报bot令牌,webhook_url是功能中的“呼叫链接”(步骤7)。该请求应被收集并插入浏览器。



请求示例
https://api.telegram.org/bot1234567:AAAAAAAAAAAAAAA/setWebHook?url=https://functions.yandexcloud.net/asdjaskjdasdjasd




第9步:向机器人发送“ hello”,然后看看我们得到了什么。



图片



感谢您的关注!如果您已阅读本文,那么我将对改善/补充/评论本文的各种建议感到满意。



All Articles