logo
Web
Максим Колмогоров
Максим Колмогоров
Разработка сайтов

Как создать Telegram бота

Осуществляем детскую мечту многих ребят: сделаем маленького робота помощника в Telegram.

Как создать Telegram бота

Перед началом

Telegram бот способен на многие вещи: отправлять уведомления, переводить текста, предлагать товары, дублировать заявки с сайта… да что говорить, есть целые сервисы по типу Tinder, в которых знакомятся люди по всему миру, но в виде чат-ботов. Самое главное, чтобы у Вас хватило фантазии и навыков программирования для реализации всех своих задумок.

Сейчас мы начнем программировать нашу простенькую бездушную машину, мы создадим бота-шутника, которые по нашему запросу будет слать нам случайный анекдот с какого-нибудь сомнительного сайта категории Б. Писать код мы будем с помощью Node.js

Автор использует в статье Node.js версии 18.16.0.

Создаем бота

Сначала нам надо создать нашего маленького робота, для этого зайдем в Telegram, в web-версию или в приложение - неважно. Там в поиске по пользователям нам надо найти BotFather. После, надо выбрать команду /start, после /newbot.

BotFather пишет на английском, если не знаете его, воспользуйтесь переводчиком. Хотя, там ничего сложного: сначала Вас попросят придумать имя бота, потом его ID (типо Telegram логина), а в конце дадут токен для API, вот он нам и нужен.


токен для бота

Также боту можно задать фотографию, описание, плюс там есть еще ряд настроек, их можете сделать сами по своему желанию. Я, например, установил боту еще фотографию.

Создаем сервер

Это не обязательно. Просто так будет удобней работать со скриптами автору, но Вы можете использовать терминал для запуска скриптов.

Чтобы не тратить много времени, возьмем Nitro, поверьте, это будет даже быстрее чем на Express.

Создайте папку на рабочем столе и откройте терминал по ее адресу. Теперь давайте инициализируем Nitro проект:

npx giget@latest nitro tg-bot

Перейдем в папку:

cd tg-bot

Теперь, установим зависимости:

npm install

Установим axios:

npm install axios

И запустим наш проект:

npm run dev

По адресу localhost:3000 у Вас откроется тестовый сервер. Но это еще не все.

В папке tg-bot создайте папку bot, в ней мы будем хранить полезный код для нашего бота. А в папке routes переименуйте index.ts в bot.get.ts. Теперь, если Вы перейдете по адресу localhost:3000/bot в браузере, Вы увидите какой-то ответ сервера по типу “Hello World!”.

Также, в tsconfig.json добавьте следующее:

"compilerOptions": {
  "baseUrl": ".",
  "paths": {
    "~": [
      "."
    ],
    "~/*": [
      "./*"
    ]
  }
}

Должно получится так:

пример tsconfig.json

Это просто для того, чтобы нам было более удобнее использовать импорты в будущем.

Создайте канал и добавьте туда бота

Далее лучше все делать из приложения, потому что в Telegram Web у меня не получилось сделать некоторые пункты. 

Создайте с другом канал в Telegram. Далее зайдите в настройки и добавьте нового администратора - нашего бота. Ищите по логину. Если вдруг не можете его найти, то сначала найдите бота в глобальном поиске, начните с ним переписку, а после вернитесь в настройки канала и снова выполните поиск.

добавленный бот в канал

Отправляем сообщение в канал

К сожалению, не все так просто. Прежде чем отправлять куда-то сообщение, мы должны узнать адрес. 

Находим нужный канал

Для этого в файл bot.get.ts добавьте этот код:

Вместо @token@ вставьте токен вашего бота (без @). После, зайдите в канал куда добавили бота и напишите любое сообщение. Перейдите по адресу localhost:3000/bot и найдите в объекте chat параметр id. Как на скриншоте ниже:

пример ответа сервера

Это адрес чата, куда бот будет слать сообщение. В целом, метод /bot на нашем сервере нам больше не понадобится.

Также, советую сделать что-то типо такого:

перенос токена в отдельный файл

Я создал файл token.ts в папке bot и сделал оттуда export default строки с токеном. И как видите, я теперь просто импортирую токен в нужный мне файл и добавляю в нужное место. Это я оставлю на Ваше усмотрение, но теперь я лично токен буду вызывать так.

Отправляем сообщение

Сначала остановим наш сервер. Теперь давайте добавим один пакет для более удобной работы с HTML (для сайта с шутками). Вот ссылка на пакет.

npm install node-html-parser

И снова запустим наш сервер:

npm run dev

После, создадим файл joke.get.ts в папке routes с таким содержимым:

Теперь если мы перейдем по адресу localhost:3000/joke, мы получим шутку в свой Telegram канал.

пример готового бота

Поздравляю, Ваш личный бот-шутник готов.

***

В целом на этом все. Можете переместить серверный код в Docker или куда-нибудь на сервер, установить cron и слать себе шутку раз в день. Также, это не полный функционал ботов в Telegram, ведь кроме этого можно научить его принимать сообщения от других людей и даже отвечать. Но это оставим на потом.

Разработка сайта
Получите персональную стоимость на разработку сайта сегодня
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Оставьте комментарий

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Нет комментариев