Как создать 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": {
"~": [
"."
],
"~/*": [
"./*"
]
}
}
Должно получится так:
Это просто для того, чтобы нам было более удобнее использовать импорты в будущем.
Создайте канал и добавьте туда бота
Далее лучше все делать из приложения, потому что в 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 канал.
Поздравляю, Ваш личный бот-шутник готов.
Оставьте комментарий