Как создать приветственного бота на grammY
Уровень сложности: 1 из 10
Что вы изучите: метод .command()
и свойство ctx.from
Задача
Создать Telegram-бота, который будет приветствовать пользователя по имени и фамилии при отправке команды /start
.
Шаг 1: Заготовка
Откройте файл bot.js
или создайте новый. Начнём с базовой структуры:
const { Bot } = require("grammy");
const bot = new Bot("ВАШ_ТОКЕН_ЗДЕСЬ");
// Здесь будет код обработчика команды /start
bot.start();
Шаг 2: Обработка команды /start
Добавим обработку команды /start
с помощью метода .command()
:
bot.command("start", async (ctx) => {
const user = ctx.from;
await ctx.reply(`Привет, ${user.first_name} ${user.last_name || ""}!`);
});
⚠️ Поле
last_name
может отсутствовать у некоторых пользователей. Чтобы избежать ошибок, используется конструкцияuser.last_name || ""
.
Что происходит в этом коде?
Когда пользователь отправляет команду /start
, бот получает контекст (ctx
). Из него можно получить данные о пользователе через ctx.from
.
Полное имя пользователя берётся из полей:
user.first_name
— обязательное поле, содержит имя.user.last_name
— необязательное поле, может отсутствовать.
Объяснение кода
Метод .command()
Метод .command(name, handler)
позволяет обрабатывать команды Telegram, такие как /start
, /help
и другие. Он автоматически игнорирует сообщения, которые не начинаются с указанной команды.
Свойство ctx.from
Это объект, содержащий информацию о пользователе, отправившем сообщение. Основные поля:
id
— уникальный идентификатор пользователяfirst_name
— имяlast_name
— фамилия (может отсутствовать)username
— никнейм (если задан)