Будем писать простой телеграм бот, отвечающий тем же сообщением, что и отправили.
Почему AWS Lambda ?
- Удобство деплоя, просто пишешь sls deploy , и lambda уже выгружена
- Платишь только за время, когда lambda работает
- Не надо настраивать никаких серверов, и беспокоиться о масштабировании
Что понадобится?
- Установленный go
- Nodejs и npm для установки serverless
- AWS аккаунт для деплоя
TLDR
- Клонируем репозиторий https://github.com/R11baka/echotgbot
- Устанавливаем в .env файле BOT_TOKEN переменную
- Компилируем бинарник env GOOS=linux go build -o bin/webhook main.go
- Выгружаем лямбду с помощью sls deploy
- Устанавливаем webhook с помощью BOT_TOKEN
Регистрация в AWS
- Регистирируем пользователя в AWS aws console и получаем aws_access_key_id, и aws_secret_access_key и прописываем их в .aws/credentials файле
Вот как выглядит мой .aws/credentials
Пишем TELEGRAM бота на Python
cat ~/.aws/credentials [default] aws_access_key_id = ADEFEFEFFEBDXK3 aws_secret_access_key = Zy6ewfir/zGaT1B2/o9JDWDSssdrla region = us-west-1
Регистрация бота
Для начала, нам надо зарегистировать бота в BotFather. Идем по ссылке, отправляем команду BotFather /newbot , придумываем имя боту, описание. В конце, BotFather вернет нам токен бота.Этот токен понадобится,нам для дальнейшей разработки.
Установка Serverless
Serverless-это framework, облегчающий настройку, деплой AWS Lambda функций. Написан на node, поэтому для его установки понадобится nodejs и npm. Устанавливаем serverless через npm
npm install -g serverless
После установки serverless проверяем, все ли установилось
sls -v Framework Core: 2.35.0 (standalone) Plugin: 4.5.3 SDK: 4.2.2 Components: 3.8.2
Теперь можно приступить к конфигурации serverless. Все настройки для serverless лежат в serverless.yml файле,который мы и создадим со следующим контентом
service: echoBot useDotenv: true configValidationMode: error # если в конфиге,чтото неправильно ,то ошибка frameworkVersion: ‘>=1.28.0 events: — http: path: /webhook method: ANY cors: false
Имлементация логики бота на Go
- Устанавливаем библиотеки telebot.v2 и aws-lambda-go
➜ go mod init testBot go: creating new go.mod: module testBot ➜ go get -u gopkg.in/tucnak/telebot.v2 go: gopkg.in/tucnak/telebot.v2 upgrade => v2.3.5 go: github.com/pkg/errors upgrade => v0.9.1 ➜ go get github.com/aws/aws-lambda-go go: github.com/aws/aws-lambda-go upgrade => v1.23.0
2. Создаем файл main.go с контентом
Как создать игрового бота в Telegram?
package main import ( «encoding/json» «fmt» «github.com/aws/aws-lambda-go/events» «github.com/aws/aws-lambda-go/lambda» tb «gopkg.in/tucnak/telebot.v2» «os» ) func main() < settings := tb.Settings< Token: os.Getenv(«BOT_TOKEN»), Synchronous: true, Verbose: true, >tgBot, err := tb.NewBot(settings) if err != nil < fmt.Println(err) panic(«can’t create bot») >tgBot.Handle(tb.OnText, func(m *tb.Message) < message := m.Text tgBot.Send(m.Sender, message) >) lambda.Start(func(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) < var u tb.Update if err = json.Unmarshal([]byte(req.Body), err == nil < tgBot.ProcessUpdate(u) >return events.APIGatewayProxyResponse, nil >) >
Текущая документация в tucnak/telebot.v2 немного устарела, и если просто написать return вместо return events.APIGatewayProxyResponse, nil , то телеграм будет повторно отправлять сообщения к боту.
Deploy бота
- Создаем файл .env и вставляем API_TOKEN полученный от BotFather
echo API_TOKEN= > .env
Проверяем serverlss конфиг с помощью команды. Не должно быть никаких ошибок.
sls print
Потом собираем бинарник
env GOOS=linux go build -o bin/webhook main.go
И выгружаем его с помощью serverless
serverless deploy -v
При успешной выгрузке, мы получим в конце
Service Information service: echoBot stage: dev region: us-west-1 stack: echoBot-dev resources: 11 api keys: None endpoints: ANY — https://y7p31bwnu1.execute-api.us-west-1.amazonaws.com/dev/webhook functions: webhook: echoBot-dev-webhook layers: None
Интеграция с telegram
Осталось сообщить телеграму, какой эндпоинт дергать при получении сообщения. Делается это командой setWebhook
curl https://api.telegram.org/bot/setWebhook?url=
Проверка что webhook установлен, происходит с помощью getWebhookInfo
➜ ~ curl https://api.telegram.org/bot1324913549:AAE1zYMH6K3hF2TOgUQoIP-E1g4rMIamck/setWebhook?url= https://y7p31bwnu1.execute-api.us-west-1.amazonaws.com/dev/webhook ➜ ~ curl https://api.telegram.org/bot1324913549:AAE1zYMH6K3hF2TOgUQoIP-E1g4rMIamck/getWebhookInfo >
Ошибки
Если что-то пошло не так,идем в CloudWatch и смотрим логи,или же из консоли также можно посмотреть логи
sls logs -f webhook
Возможно вам будет интересно:
Источник: bookflow.ru
Создание бота в мессенджере Telegram
Для того чтобы получить так называемую базовую основу для своего собственного бота, необходимо обратиться за помощью к специальному боту Телеграм.
-
Откройте мессенджер и либо воспользуйтесь представленной выше ссылкой, либо введите название бота в поисковую строку и откройте чат с ним. Нажмите на кнопку «Запустить».
Шаг 2: Настройка
Обратите внимание! Данный шаг инструкции подразумевает, что у вас уже есть как минимум основная идея для бота и общее представление о том, как он будет выглядеть и работать. О создании его «внутренней», программной части, будет рассказано в следующем шаге, а потому вы вполне можете начать с разработки и только после этого перейти к настройке.
/setname | Изменение отображаемого имени бота |
/setdescription | Добавление описания |
/setuserpic | Смена аватара |
/setcommands | Установка и редактирование перечня команд, на которые бот должен реагировать |
/deletebot | Удаление добавленного бота |
/token | Создание нового токена или замена старого, если оригинальный скомпрометирован |
/setinline | Включение inline-режима, при котором бот будет реагировать на соответствующие команды во всех чатах, куда он добавлен |
/setinlinefeedback | Ответ на ввод отображением заданных вариантов (показом сообщения-шаблона, изображения, кнопки и т. д.) |
/setprivacy | Активация приватного режима, при котором бот будет распознавать исключительно команды и адресованные ему сообщения |
Шаг 3: Разработка
Наиболее важный и, наверное, сложный, если говорить о малоопытных пользователях, этап в создании собственного Telegram-бота – его непосредственная разработка. В примере далее нами будет использоваться Python.
Примечание: pyTelegramBotAPI – библиотека, необходимая для обеспечения работы Telegram-бота, но это не единственное такого рода решение. В качестве альтернативы можете использовать telegram-bot – соответствующая команда для установки указана ниже. По этой библиотеке можно найти довольно много инструкций в интернете, но в нашем случае она работала некорректно.
pip install python-telegram-bot
Откройте редактор кода и сделайте следующее:
-
Прежде всего импортируйте в него установленную на предыдущем шаге библиотеку. В случае с pyTelegramBotAPI запрос должен выглядеть следующим образом: import telebot
Обратите внимание! Описанное выше, — это обязательная «основа» для будущего бота. Далее – пример простейшего кода команды запуска и ответа с пояснениями, в вашем случае это может и наверняка будет отличаться, так как зависит исключительно от поставленной задачи.
Пояснение: Это декоратор для функции send_welcome, который указывает, что она должна выполняться в случае, если пользователь отправляет команду /start. Когда это происходит, бот отвечает приветственным сообщением с текстом «Привет! Я простой бот, рад познакомиться!».
Пояснение: Этот обработчик, обозначенный декоратором echo_message, будет вызываться для всех текстовых сообщений, которые отправляют пользователи. Когда бот получает текстовое сообщение, он просто повторяет это сообщение обратно отправителю с помощью функции bot.reply_to().
Завершающая команда – запуск бота: if __name__ == «__main__»:
bot.polling()
Пояснение: Эта команда запускает бота и начинает прослушивать входящие обновления от Telegram. Как только пользователь отправит сообщение, обработчики, определенные ранее, будут вызваны и выполнят необходимые действия.
Шаг 4: Запуск и использование
Для того чтобы бот работал и был доступен к использованию в Telegram, его необходимо запустить. Сделать это можно с помощью любого варианта системной консоли, будь то «Командная строка», «PowerShell» или «Терминал».
-
Перейдите в папку с проектом вашего бота, зажмите клавишу «Shift» на клавиатуре, не отпуская ее, кликните правой кнопкой мышки (ПКМ) в пустой области и, далее, в зависимости от версии используемой операционной системы (в нашем примере – Windows 11) и/или ваших собственных пожеланий, выберите предпочтительный вариант консоли в контекстном меню.
Введите команду следующего вида и нажмите «Enter»: python your_telegram_bot.py ‘your_telegram_bot’ – название вашего бота, присвоенное ему при сохранении на последнем шаге предыдущей инструкции.
Примечание: Вместо выполнения двух предыдущих шагов вы можете самостоятельно запустить консоль, перейти из нее в папку с проектом и выполнить его запуск. Для этого поочередно введите и выполните следующие команды: cd путь_к_папке_с_проектом
python your_telegram_bot.py
Шаг 5: Хостинг
Для того чтобы Telegram-бот работал постоянно, даже когда ваш компьютер выключен и/или проект не запущен в консоли, его необходимо разместить на хостинге. Это не самая сложная задача, но и откровенно простой ее назвать нельзя. Причем важно отметить, что сделать это бесплатно на сегодняшний день не получится, по крайней мере, если не рассматривать ограниченные по времени и/или функциональности решения. А с учетом того, что использование и настройка в каждом отдельном случае существенно отличается (это может делаться на веб-сайте, в десктопной программе или консоли), предоставить универсальную инструкцию не получиться.
Единственное, что мы можем порекомендовать – ввести в поисковую систему запрос приблизительно указанного ниже вида и последовательно ознакомиться со всей доступной информацией по теме. Наверняка вы сможете отыскать подходящее предложение.
хостинг телеграм бот
Способ 2: Специализированный сервис
Альтернативой решению от Telegram и последующей самостоятельной разработке будет один из сторонних сервисов, который позволяет как создавать ботов, так и добавлять к ним дополнительную функциональность, причём последнее не требует навыков программирования. Одним из самых удобных решений такого рода является проект Manybot, которым мы и воспользуемся.
- Воспользуйтесь ссылкой выше, а после загрузки страницы нажмите на кнопку «Создать бота».
- Далее кликните «Открыть Manybot в Telegram».
Важно! Этот сервис работает только с клиентским приложением, веб-версия не поддерживается!
Источник: lumpics.ru
Что умеет Telegram-бот от Carrot quest и как его настроить
У нас классная новость! Мы разработали чат-бота в Telegram, чтобы общение бизнеса с клиентами стало еще удобнее.
В этой статье мы подробно разберем, какие задачи Telegram-бот поможет закрыть командам, что он уже умеет и какие функции скоро появятся.
А если вы прямо сейчас хотите не читать, а уже попробовать чат-бота в Telegram и поделиться с нами обратной связью, напишите нам в чат: «Хочу Telegram-бота».
Почему бизнесу нужен Telegram-бот
Telegram в России стал самым популярным мессенджером, а некоторые социальные сети теперь доступны только с VPN. Бизнесу пора включать Telegram наполную и использовать все его возможности:
- общаться с клиентами в удобном для них канале;
- догревать тех, кто ушел с сайта;
- выстроить бесшовную коммуникацию с пользователем: начать на сайте, а продолжить в мессенджере.
Бот от Carrot quest — это не просто очередной сервис для запуска Telegram-бота, а возможность общаться с клиентами из всех каналов в одной экосистеме:
- вся история общения с клиентом собирается в одном сервисе — и с ботом и с операторами;
- можно связать инструменты Carrot quest между собой и настроить омниканальную коммуникацию с пользователями;
- собрать чат-бота для Telegram можно за 5 минут в визуальном редакторе, как и любого другого бота в Carrot quest.
Что умеет Telegram-бот от Carrot quest
Вы, скорее всего, уже знакомы с нашими ботами на сайте, а вот что умеет Telegram-бот:
- запускается после нажатия на кнопку /start в диалоге;
- собирает информацию о пользователе, его контакты и автоматически передает все данные в сервис;
- отвечает на часто задаваемые вопросы;
- автоматически распределяет диалог на нужную команду или оператора.