Как создать бота случайных фактов на grammY
Уровень сложности: 2 из 10
Что вы изучите: работа с массивами, использование Math.random()
Задача
Создать Telegram-бота, который при получении любого текстового сообщения от пользователя отправляет случайный факт из заранее подготовленного списка.
Шаг 1: Заготовка
Вот стартовый код бота:
const { Bot } = require("grammy");
const bot = new Bot("ВАШ_ТОКЕН_ЗДЕСЬ");
// Здесь будет логика отправки случайного факта или анекдота
bot.start();
Шаг 2: Создание списка
Добавьте массив с несколькими строками:
const facts = [
"Пчёлы могут распознавать человеческие лица.",
"Бамбук может расти на 90 сантиметров в день.",
"Левая рука большинства людей живёт дольше правой.",
"Если у вас дома завёлся кенгуру — звоните по телефону.",
"Ленивцы проводят 90% жизни во сне.",
"Осьминоги имеют три сердца: два качают кровь к жабрам, одно — к остальному телу.",
"Слон — единственное животное, которое не может прыгать."
];
Шаг 3: Отправка случайного элемента
Добавьте обработчик текстовых сообщений и функцию для случайного выбора:
bot.on("message:text", async (ctx) => {
const randomIndex = Math.floor(Math.random() * facts.length);
const randomFact = facts[randomIndex];
await ctx.reply(randomFact);
});
Теперь при любом текстовом сообщении бот будет отвечать случайным фактом из списка.
Что происходит в этом коде?
- В переменной
facts
хранится массив строк. - При получении сообщения:
- Генерируется случайное число от 0 до длины массива.
- По этому индексу выбирается один из элементов массива.
- Выбранный факт отправляется пользователю.
Объяснение кода
Массивы
Массив (Array
) — это структура данных, которая позволяет хранить несколько значений в одной переменной. Доступ к каждому элементу осуществляется по его индексу (начинается с 0).
Math.random()
Функция Math.random()
возвращает случайное число от 0 (включительно) до 1 (не включительно). С её помощью можно генерировать случайные значения для выбора из массива.
Math.floor()
Функция Math.floor()
округляет число вниз до ближайшего целого. Используется для получения допустимого индекса массива.