В серии заметок я расскажу как написал телеграмм-бота на 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", ...
например чтобы бот не просто отображал вводимый текст, а как-то его менял- придумывал рифму или менял порядок букв.
В следующей части научим бот показывать картинку.
Top comments (2)
Расширение файла указал а дальше что? Название файла то какое? Не понятно.
На скриншотах не показал. Не понятно.
Название файла я уже написал: .env
Я не думал, что этот момент "в начале файла написать ..." вызовет трудности.