Stanislav Karol
Posted on January 2, 2021
В серии заметок я расскажу как написал телеграмм-бота на Node.JS и развернул его на амазоне.
Вообще считается что я фронт-энд разработчик, поэтому возможно те слова, что я буду здесь писать, не смогут 100% ответить на ваши вопросы, а возможно даже будут замечания по тому, как реализованы блоки кода. Ну, если что- всегда доступны комментарии, пишите, обсудим.
Итак, первый шаг по созданию бота простой- нужно собственно создать этот самый бот. Делается это в телеграмм-боте @botfather. После того, как Вы добавите его себе в контакты, дайте ему команду /help
Дайте имя боту — клиенты увидят это имя при общении с ботом. И никнейм бота — по нему можно будет найти бота в Telegram. Никнейм должен быть уникальным, не повторять существующие в базе и заканчиваться на слово «bot»
После того как вы выберите подходящее имя бот будет создан. Вы получите сообщение со ссылкой на бота t.me/<никнейм_бота>, рекомендации по настройке аватарки, описание бота и список команд для настройки бота.
Поздравляю Вас с созданием своего телеграмм-бота и себя за то, что я смог Вас научить такому действию.
На этом в принципе можно было остановиться, но нет- какая же это работа, а где заявленный NodeJS? - Давайте приступим к оживлению бота.
Создание логики работы бота на NodeJS
Перед этим нам будет необходимо сделать кое-какие приготовления, а именно: Создать проект и установить пакет telegraf:
npm init -y
npm i telegraf --save
Теперь осталось дело за малым: написать его действия.
Создайте JS-файл bot.js такого содержания:
const { Telegraf } = require("telegraf");
// Создать бота с полученным ключом
const bot = new Telegraf("1496911419:AAGt2IUR7zC2-5 1VTLj4pLzt3i7l664-P0x0");
// Обработчик начала диалога с ботом
bot.start((ctx) =>
ctx.reply(
`Приветствую, ${
ctx.from.first_name ? ctx.from.first_name : "хороший человек"
}! Набери /help и увидишь, что я могу.`
)
);
// Обработчик команды /help
bot.help((ctx) => ctx.reply("Справка в процессе"));
// Обработчик команды /whoami
bot.command("whoami", (ctx) => {
const { id, username, first_name, last_name } = ctx.from;
return ctx.replyWithMarkdown(`Кто ты в телеграмме:
*id* : ${id}
*username* : ${username}
*Имя* : ${first_name}
*Фамилия* : ${last_name}
*chatId* : ${ctx.chat.id}`);
});
// Обработчик простого текста
bot.on("text", (ctx) => {
return ctx.reply(ctx.message.text);
});
// Запуск бота
bot.launch();
Что у нас тут написано:
const bot = new Telegraf("1496911419:AAGt2IUR7zC2-1VTLj4pLzt3i7l664-P0x0");
Здесь тот самый ключ, который нам поведал BotFather . А т.к. этот ключ не только полезен, но и весьма важен, то его я бы скрыл от тех, кто будет смотреть наш код. Например- на гитхабе. Поэтому давайте напишем эту строку по-другому:
const bot = new Telegraf(process.env.TELEGRAM_TOKEN_EDU);
А сам код запишем в файле .env :
TELEGRAM_TOKEN_EDU="1496911419:AAGt2IUR7zC2-1VTLj4pLzt3i7l664-P0x0"
Для того, чтобы сработал этот код нужно установить пакет dotenv и в начале файла bot.js написать: require("dotenv").config();
Дальше по коду можно будет из комментариев понять, что делают команды. Запустить наш скрипт можно командой node bot.js
и в телеграмм-чате с ботом у Вас должно быть примерно следующее:
Сейчас самое время поэкспериментировать - Добавить свои команды; изменить bot.on("text", ...
например чтобы бот не просто отображал вводимый текст, а как-то его менял- придумывал рифму или менял порядок букв.
В следующей части научим бот показывать картинку.
Posted on January 2, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
January 18, 2024