- PVSM.RU - https://www.pvsm.ru -
Есть 100500 способов и инструментов создать простого serverless чат-бота для телеграм. А наш все-равно будет проще, хотя бы по числу кликов в интерфейсе. Сам бот будет написан на Python, а выполнятся будет на serverless движке Swifty.
Как и всегда в наших гайдах, никаких особых знаний питона или других языков программирования вам не потребуется. Нужно лишь умение запустить кое-что в командной строке. Если вы находитесь в России, то еще и VPN на вашем компьютере, так как потребуется достучаться до сервера телеграм.
Чтобы создать нового бота, нужно попросить другого бота это сделать. Откройте телеграм и найдите там бота @BotFather или откройте ссылку [1]. Далее, наберите /newbot и следуйте инструкциям БотПапы. Для минимальной настройки вам нужно только дать боту display name и username. После создания бота вам будут выданы access token и URL. Сохраните их где-нибудь.
Для начала вам нужно зарегистрироваться в Swifty — нашей серверлесс платформе. Сделать это можно здесь [2]. Затем зайдите в панель управления и сделайте следующее:
Чтобы телеграм мог позвать функцию бота, нужно создать ей API ссылку. Перейдите на вкладку Triggers, нажмите Add Trigger -> REST API (URL). Сохраните получившуюся ссылку.
Затем, вам нужно дать функции бота доступ к access token, который вы получили от telegram. В Swifty есть специальная сущность — Account, которая позволяет безопасно хранить любые данные, например, связки логин-пароль или токены.
Код получившейся функции:
import json
import os
import sys
import requests
BASE_URL = "https://api.telegram.org/bot{}".format(os.getenv('ACC_TELEGRAMSWIFTYBOT_TOKEN'))
def Main(req):
try:
data = json.loads(req.body.encode())
message = str(data["message"]["text"])
chat_id = data["message"]["chat"]["id"]
first_name = data["message"]["chat"]["first_name"]
response = "Please /start, {}".format(first_name)
if "start" in message:
response = "Hello {}! Type /help to get list of actions.".format(first_name)
if "help" in message:
response = "/about - get information about Swifty"
if "about" in message:
response = ("Swifty is the serverless platform that allows startups, developers and enterprises to develop and run application backend with minimal time-to-market, costs and without infrastructure management.n"
"Start creating your backend atn"
"https://swifty.cloud")
data = {"text": response.encode("utf8"), "chat_id": chat_id}
url = BASE_URL + "/sendMessage"
requests.post(url, data)
except Exception as e:
print(e)
return {"statusCode": 200}, None
Это простейший бот, который умеет отвечать на команды /start, /help и /about. Можете также добавить любые свои команды и расширить его функционал по-желанию.
Теперь вам нужно сказать телеграму, по какой ссылке находится ваш бот. Вам нужно открыть командную строку и выполнить в ней следующую команду. При этом YOUR_API_URL нужно заменить на API ссылку, которую вы скопировали ранее, а YOUR_ACCESS_TOKEN на токен.
curl -XPOST https://api.telegram.org/botYOUR_ACCESS_TOKEN/setWebhook?url=YOUR_API_URL
Если все прошло хорошо, то вы увидите примерно следующее:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}
Если вы находитесь в России, то все пройдет хорошо только в том случае, если у вас включен VPN.
Найдите в telegram бота с вашим именем и попробуйте выполнить пару команд, например, /start или /about. Если все работает — поздравляем. Если нет — пожалуйтесь здесь в комментарии или в нашем slack канале [4].
Как работает такой готовый бот можно посмотреть, если найти в телеграме нашего бота с именем swifty_test_bot. Спасибо.
Make your ideas come app, как говорят в swifty.cloud [5].
Автор: RUSONYX
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/301953
Ссылки в тексте:
[1] ссылку: https://telegram.me/BotFather
[2] здесь: https://swifty-connector.rusonyx.ru/signup
[3] github.com/swiftycloud/swifty.demo: https://github.com/swiftycloud/swifty.demo
[4] slack канале: https://join.slack.com/t/swiftycloud/shared_invite/enQtNDk1Nzk5NTQ1OTIzLWVhNWY3ZDZmNmQ1YTBlZGNlN2IzMmNhYmEzNTNkOGU2MzdmZWE3YTBiMjVjYWI5Y2FhMTUwMWUyOTNkZGE5OTM
[5] swifty.cloud: https://swifty.cloud
[6] Источник: https://habr.com/post/432914/?utm_campaign=432914
Нажмите здесь для печати.