Как создать бота с подсказками на grammY
Уровень сложности: 2 из 10
Что вы изучите: условные конструкции, фильтры на основе текста сообщения
Задача
Создать Telegram-бота, который реагирует на определённые ключевые слова — например, «привет» или «погода» — и отправляет соответствующий ответ.
Шаг 1: Заготовка
Вам понадобится стандартная структура бота:
const { Bot } = require("grammy");
const bot = new Bot("ВАШ_ТОКЕН_ЗДЕСЬ");
// Здесь будет логика обработки сообщений
bot.start();Шаг 2: Реакция на ключевые слова
Добавьте обработчик для события message:text, чтобы работать только с текстовыми сообщениями. Внутри используйте условные конструкции:
bot.on("message:text", async (ctx) => {
const text = ctx.message.text.toLowerCase();
if (text === "привет") {
await ctx.reply("Привет! Как я могу помочь?");
} else if (text === "погода") {
await ctx.reply("Сейчас не могу показать погоду, но это отличный день для новых возможностей!");
} else {
await ctx.reply("Не знаю, как ответить на это.");
}
});Что происходит в этом коде?
Бот проверяет текст входящего сообщения и сравнивает его с заранее заданными словами:
- Если пользователь пишет "привет", бот отвечает приветствием.
- Если пользователь пишет "погода", бот даёт шаблонный ответ.
- Для всех остальных случаев предусмотрен универсальный ответ.
Метод .toLowerCase() используется, чтобы сравнение было регистронезависимым.
Объяснение кода
Фильтр message:text
Этот фильтр гарантирует, что обработчик будет запускаться только при получении текстовых сообщений. Это помогает избежать ошибок, если пользователь отправит фото, стикер или голосовое.
Условные конструкции
Конструкция if...else if...else позволяет выполнять разные действия в зависимости от содержания сообщения. Это базовый инструмент управления логикой программы.
Полезный совет
Вы можете расширить список ключевых слов и добавить больше реакций. Например, попробуйте добавить ответы на слова "спасибо", "помощь" или "прощай".
Загрузка комментариев...