Запустить Телеграмм бота через консоль

Telegram является одним из самых популярных мессенджеров в мире: каждый месяц 700 миллионов пользователей используют его для общения, управления своими проектами и бизнесом. Важной функцией Телеграма (ТГ) считается возможность создания чат-ботов — виртуальных помощников, которые могут автоматизировать взаимодействие с клиентами, разгрузить службу поддержки, обеспечить быстрый и удобный для аудитории доступ к информации. Однако, чтобы ваш телеграм-бот работал круглосуточно, необходимо разместить его на сервере у провайдера хостинга. В статье поэтапно рассказываем, как поставить бота на хостинг и настроить сервер, чтобы организовать его бесперебойную работу.

Пошаговая инструкция, как запустить бота на хостинге

Сделать универсальное руководство по загрузке телеграм-бота на хостинг нельзя, поскольку для создания ботов используются разные технологии и языки программирования. Чаще всего виртуальных ассистентов для Телеграма пишут на Python или NodeJS. Наша инструкция основана на первом варианте: мы опишем, как выбрать хостинг для чат-бота на Python, установить нужные модули на сервер, залить, запустить, а также поставить бота на автоисполнение. Однако общая схема действий по установке, размещению и запуску может быть применима к любому телеграм-боту.

Пишем Telegram бота, который говорит с ChatGPT API

Как загрузить Telegram бота на хостинг.

Изображение от redgreystock на Freepik.

Выбор хостинга для телеграм-бота

Выбирая, где разместить своего чат-бота, следует обращать внимание на возможности и ресурсы, которые поставляет хостинг-провайдер. Установить и запустить телеграм-бота можно и бесплатно: например, через облачный сервис Heroku. Но бесплатный хостинг крайне ограничен и часто небезопасен. Если у вас простой бот, который отвечает на триггеры заготовленными репликами, его можно залить на обычный shared hosting. Главное, найти тариф с поддержкой Python и Telegram API.

Если же ваш помощник основан на нейросети и ожидается большой поток клиентов, лучше остановиться на аренде VPS (Virtual Private Server). На виртуальном сервере подключение будет стабильнее за счет изолированности вычислительных мощностей, а кроме того, VPS легче масштабировать. Вам не понадобится сайт и домен, чтобы его арендовать: подключиться можно будет по выделенному IP-адресу.

Настройка сервера для telegram-бота

Допустим, вы заказали подходящий сервер и удаленно подключились к нему по SSH. Прежде чем размещать на нем файлы нашего бота, нужно установить зависимости, которые потребуются для его работы. В частности, это язык Python и библиотека РуTelegramBotAPI. Мы покажем, как поставить эти компоненты на примере ОС Ubuntu. Введите в терминал:

sudo apt install python3
sudo apt install python3-pip
pip3 install pyTelegramBotAPI

Простой Telegram-бот на JavaScript за 10 минут

Тарас Голомозый, fullstack web-разработчик и преподаватель в школе программирования Elbrus Bootcamp, написал инструкцию по созданию простого бота на JavaScript с возможностью расширения функционала. В базовом варианте его задача — показывать текущую погоду по геолокации пользователя.

Пару слов об уровне знаний, на который рассчитан этот текст. Для создания бота достаточно иметь базовое представления о JavaScript, а также знать, как работает API. Перед началом работы нужно установить библиотеку telegraf.js, которая работает на базе официального API Telegram, и библиотеку для выполнения HTTP-запросов (например, axios).

Шаг первый: базовый функционал

Откроем редактор кода и инициализируем проект через терминал с помощью команды npm -y. После этого в проекте появится файл package.json. Теперь мы можем добавить все необходимые библиотеки командой npm i, после которой через пробел прописываются названия необходимых нам библиотек. Все названия можно посмотреть в документации: в этом примере это будут telegraf и axios.

Стоит отметить, что API погоды отдельно устанавливать не нужно — она работает по архитектуре клиент-сервер, что позволяет просто отправлять запросы и получать ответы.

Пока устанавливаются библиотеки, можно прочитать документацию к ним. У telegraf.js есть несколько примеров готового бота. Можно взять первый пример и посмотреть, как он работает.

Для этого создадим новый файл с именем bot.js и добавим в него следующий код:

Еще по теме:  Как закрепить больше чатов в Телеграмме

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(); // Enable graceful stop process.once(‘SIGINT’, () => bot.stop(‘SIGINT’)); process.once(‘SIGTERM’, () => bot.stop(‘SIGTERM’));
«start»: «node bot.js»

Если мы запустим проект в терминале командой npm start, то увидим сообщение «Bot token is required». Получить токен можно через Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой инструкции это будет elbrusbootcampweatherbot.

После этого BotFather пришлет сообщение с токеном и ссылкой на бот. Копируем токен и вставляем его в третью строчку примера:

const bot = new Telegraf(process.env.BOT_TOKEN);

Для проверки находим бота в поиске в Telegram по имени. Теперь бот запускается, но пока не выполняет никаких полезных функций. Чтобы разобраться, что именно нужно добавить, построчно разберем код из примера.

Первая строка отвечает за подключение библиотеки telegraf, которая непосредственно взаимодействует с API Telegram и позволяет нам использовать определенные методы для работы с ботом. В следующей строке создаем нового бота и указываем ключ доступа к нему.

Далее указано, как бот будет реагировать на различные команды: при нажатии /start он отправит сообщение welcome, при отправке стрикера — эмодзи и так далее. Последние две строчки нужны для того, чтобы выполнение ботом команд правильно завершалось в облачных сервисах.

Другие методы кроме /start нам не понадобятся, поэтому их можно смело удалить:

const < Telegraf >= require(‘telegraf’); const bot = new Telegraf(process.env.BOT_TOKEN); bot.start((ctx) => ctx.reply(‘Welcome’)); bot.launch(); // Enable graceful stop process.once(‘SIGINT’, () => bot.stop(‘SIGINT’)); process.once(‘SIGTERM’, () => bot.stop(‘SIGTERM’));

Добавим собственные методы: при отправке геолокации бот отвечает актуальном прогнозом погоды для этой территории. Первым делом напишем обработчик, который будет принимать сообщение от пользователя и выводить его в консоль.

bot.on (‘message’,(ctx) => < console.log(‘ctx.message’); >)

Теперь при отправке боту геолокации в консоли мы увидим объект location, в котором содержится широта и долгота. Добавим проверку: если в сообщении пользователя содержится объект location, данные из него отправляются на сервер через API агрегатора прогнозов погоды.

bot.on (‘message’,(ctx) => < if(‘ctx.message.location’)< console.log(‘ctx.message.location’); >)

Шаг второй: подключаем API

Как и в предыдущем случае, используем пример из официальной документации OpenWeather. Нам нужно обратиться на специальный адрес и передать туда широту, долготу и API-ключ. В ответ мы получим текущую погоду.

Вставим пример в код, используя результат проверки ctx.message.location с указанием широты и долготы:

bot.on(‘message’, (ctx) => < if (ctx.message.location) < const weatherAPIUrl = `https://openweathermap.org/data/2.5/weather?lat=$appid=439d4b8O4bc8187953eb36d2a8c26a02`; > >);

API-ключ можно создать в личном кабинете на сайте OpenWeather. Ключ указывается как параметр appid.

Следующим шагом нужно обратиться по адресу, предоставленному OpenWeather, и получить данные. Для этого используем библиотеку axios. Функция для подключения библиотеки указана в ее официальной документации и выглядит следующим образом:

const axios = require(‘axios’);

Поскольку все операции со сторонним сервером выполняются асинхронно, добавим async и await в метод bot.on:

bot.on(‘message’, async (ctx) => < if (ctx.message.location) < const weatherAPIUrl = `https://openweathermap.org/data/2.5/weather?lat=$appid=439d4b8O4bc8187953eb36d2a8c26a02`; const response = await axios.get(weatherAPIUrl); > >);

Теперь при отправке боту геолокации в консоли мы увидим информацию о погоде в текущем месте расположения пользователя. Остается только сформировать сообщение, которое бот отправит пользователю в качестве ответа. В тексте укажем название района и температуру в градусах Цельсия:

ctx.reply(`$: $ $ °C`);

На этом все: итоговый код проекта можно найти в репозитории на GitHub.

При желании можно указать дополнительные параметры, которые бот будет выводить в сообщении. Например, облачно на улице или солнечно, есть осадки или нет и другие. Также к боту можно подключить переводчика и переводить состояние погоды на русский язык.

Катрин Алимова

Катрин Алимова

Вам может также понравиться.

Скрипты async, defer и оптимизация

Скрипты async, defer и оптимизация

Пишем нашу первую сопрограмму

12 сент. 2023 г.

Пишем нашу первую сопрограмму

Основы блокчейна на примере написания криптовалютного кошелька. Часть 2

21 авг. 2023 г.

Источник: elbrusboot.camp

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

Я начал погружение в мир IT лишь три недели назад. Серьезно, три недели назад я даже не понимал синтаксиса HTML, а знакомство с языками программирования заканчивалось школьной программой по Pascal 10-летней давности. Однако я решился поехать в IT-лагерь, для детей которого было бы неплохо сделать бота. Я решил, что это вряд ли так сложно.

Еще по теме:  Как оформить Телеграмм канал для продаж

С этого начался длинный путь, в рамках которого я:

  • развернул облачный сервер с Ubuntu,
  • зарегистрировался на GitHub,
  • выучил базовый синтаксис JavaScript,
  • прочитал тонну статей на английском и русском языках,
  • сделал, наконец, бота,
  • написал эту статью, наконец.

Выглядел итоговый результат примерно так:

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

Скажу сразу, это статья для начинающих — чтобы просто понять, как делать элементарные вещи с самой нулевой точки.

А еще — для продвинутых программистов — просто чтобы их немного посмешить.

1. Как писать код на JS?

Я понимал, что стоит для начала хотя бы разобраться в синтаксисе языка. Выбор пал на JavaScript, просто потому что следующим шагом для меня было создание приложения на ReactNative. Я начал с курса на Codecademy и остался в большом восторге. Первые 7 дней бесплатно. Реальные проекты. Рекомендую. Прохождение его заняло порядка 25 часов. На самом деле далекоооо не все из него пригодилось. Вот так примерно выглядит структура курса и подробно первый блок.

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

2. Как зарегистрировать бота?

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

3. Как выглядит код бота?

После долгого изучения статей, я понял, что стоит использовать какую-то библиотеку (сторонний код в формате модуля), чтобы не мучаться с изучением API телеграма и созданием с нуля больших кусков кода. Я нашел фреймворк telegraf , который нужно было как-то подключить к чему-то при помощи npm или yarn. Примерно так я понимал тогда, из чего состоит развертывание бота. Смеяться здесь. Я не обижусь. Больше всего при последующем создании бота мне помогли примеры, указанные внизу страницы:

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

3. Как создать собственный облачный сервер за 100 рублей

После долгих поисков я понял, что команда ‘npm’ из картинки выше относится к командной строке. Командная строка есть везде, но чтобы получилось ее исполнить, нужно поставить NodePackageManager. Проблема была в том, что программировал я на PixelBook с ChromeOS. Я пропущу здесь большой блок про то, как я познавал Linux — для большинства это пустое и ненужное. Если у вас есть Windows или MacBook, у вас уже есть консоль.

Если в двух словах, я поставил Linux через Crostini.

Однако в процессе я понял, что для постоянной работы бота (а не только когда у меня включен компьютер) мне нужен облачный сервер. Я выбрал vscale.io Я закинул 100 рублей, купил самый дешевый сервер Ubuntu (см.картинку).

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

4. Как подготовить сервер для запуска бота

После этого я понял, что нужно сделать на сервере какую-то папку, в которую я положу файл с текстом кода. Для этого в консоли (запускать прямо на сайте через кнопку «Открыть консоль») я вбил

mkdir bot

bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js

sudo apt update sudo apt install nodejs sudo apt install npm

Очень рекомендую на этом этапе настроить подключение к серверу через свою консоль. Вот инструкция Это позволит работать с сервером напрямую через консоль своего компьютера.

5. Как написать код первого бота.

А вот теперь просто открытие для меня. Любая программа — это просто строки текста. Их можно вбить куда угодно, сохранить с нужным расширением и все. Ты прекрасен. Я использовал Atom , но реально, можно просто в блокноте стандартном писать. Главное — сохранить потом файл в нужном расширении. Это как написать текст в Word и сохранить.

Я сделал новый файл, в который вставил код из примера на странице telegraf и сохранил в файл index.js (вообще не обязательно называть файл так, но так принято). Важно — вместо BOT_TOKEN вставьте свой API-ключ из второго пункта.

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. Как запустить бота

Для этого, находясь в папке с файлом (чтобы переходить из папки в папку через консоль — выполняйте команду формата cd bot Чтобы убедиться, что вы там, где нужно можно вбить команду, которая отобразит в консоли все файлы и папки, которые там лежат ls -a

Для запуска я ввел в консоль

node index.js

Если нет никакой ошибки — все хорошо, бот работает. Ищите его в телеграме. Если ошибка есть — применяйте свои знания из 1 пункта.

9. Как запустить бота в фоновом режиме

Достаточно быстро вы поймете, что бот работает только тогда, когда вы сами сидите в консоли. Чтобы решить эту проблему я использовал команду

screen

После этого появится экран с каким-то текстом. Это значит, что все хорошо. Вы на виртуальном сервере на облачном сервере. Чтобы понять лучше, как это все работает — вот статья . Просто заходите в свою папку и вбивайте команду по запуску бота

node index.js

10. Как работает бот и как расширить его функционал

Что же умеет наш бот из примера? Он умеет

bot.start((ctx) => ctx.reply(‘Welcome!’))

говорить «Welcome!» в момент старта (попробуйте поменять текст)

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

в ответ на стандартную команду /help отправлять сообщение «Send me a sticker»

bot.on(‘sticker’, (ctx) => ctx.reply(»))

в ответ на стикер отправлять одобрение

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

отвечать «Hey there», если ему пишут ‘hi’
bot.launch()

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

Если вы посмотрите код на github , то быстро поймете, что сильно далеко от этого функционала я не ушел. Что активно используется, так это функция ctx.replyWithPhoto Она позволяет отправлять заданное фото или gif в ответ на определенный текст.

Значимая часть кода была написана детьми 11-13 лет, которым я дал доступ к боту. Они ввели свои user-case. Думаю, легко определить, какая часть сделана была ими.

Например, на сообщение «джейк» приходит гифка с известным персонажем из мультика Adventure Time.

Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании

Чтобы развивать бота дальше, подключать клавиатуру нужно смотреть примеры, например, отсюда

11. Как обновлять код и перезапускать бота

Не забывайте, что надо обновлять код не только на github, но и на сервере. Делать это просто — стопим бота (нажать ctrl+c),

— вводим в консоль, находясь в целевой папке, git pull
— вновь запускаем бота командой node index.js

Многие вещи, описанные в этом файле, будут супер очевидны для продвинутых программистов. Однако когда я сам пытался одним махом перепрыгнуть пропасть до мира ботов, мне очень не хватало подобного гайда. Гайда, в котором не пропускается очевидные и простые для любого IT-специалиста вещи.

В дальнейшем я планирую пост про то, как сделать свое первое приложение на ReactNative в таком же стиле, подписывайтесь!

Рейтинг
( Пока оценок нет )
Загрузка ...