Сегодня будем делать бота — это отличное (и быстрое) занятие, которое развивает уставший мозг и даёт возможность отправить друзьям ссылочку со словами «Смотри, это моё».
Для работы понадобятся
- Редактор кода, чтобы писать код. Если не знаете, какой выбрать — мы уже рассказывали. Если не умеете писать код, то вот инструкция, как его написать и запустить.
- Node.js любой версии, выше 0.12. Нужно, чтобы библиотека для ботов заработала. Как установить Node.js.
- Консоль. Или встроенный в систему вариант, или какой-нибудь другой.
- VPN. Возможно, но не факт, потому что Телеграм работает не везде.
Шаг 1. Регистрируем бота
Придумываем название и имя боту. Название — то, как он будет подписан в списке контактов. Имя — строка, по которой его можно будет найти. Обратите внимание, что имя должно оканчиваться на bot . В ответ мы получим токен — длинную последовательность символов, которая пригодится нам в будущем. Мы назвали бота echoKeksBot , но вам придётся придумать другое название, потому что это уже занято.
AIOGRAM ► Как создать Inline бота? -Telegram bot ПРОГРАММИРОВАНИЕ ПО ПЛЕЙЛИСТАМ УРОК 29
Извините.
Шаг 2. Создаём проект
Создаем папку в любом месте и открываем её в консоли. Там пишем npm init -y — эта команда создаст файл package.json , который выглядит примерно так:
Теперь установим node-telegram-bot-api — это библиотека для создания телеграм-ботов на Node.js. Введём команду:
npm install —save —save-exact node-telegram-bot-api
Создадим пустой файл index.js и напишем там самого простого бота, который будет отвечать на любое сообщение:
bot.on(‘message’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Привет, Друг!’); >);
Шаг 3. Запускаем бота
Тут всё просто, в консоли пишем node index.js , заходим к нашему боту в телеграм и начинаем с ним общаться. Не закрывайте консоль — бот работает только на вашем компьютере, и без консоли он не станет отвечать.
Как видим, бот успешно отвечает. Но бот-повторяха — не интересно, усложним задачу. Пусть бот присылает нам картинку.
Шаг 4. Отсылаем картинку
Добавим картинку с Кексом в папку с проектом. Для отправки изображения используем метод .sendPhoto() — передадим в него id чата и путь до картинки. Получится такой код:
bot.on(‘message’, (msg) => < const chatId = msg.chat.id; bot.sendPhoto(chatId, ‘keks.png’); >);
Запускаем бота, проверяем, работает:
Шаг 5. Добавим клавиатуру. И пёсика
Добавим фотографию милого пёсика в корень проекта. Теперь там две картинки.
Создадим конфигурацию для клавиатуры в боте, пусть у нас будет 3 кнопки: «Хочу кота», «Хочу пёсика» и «Пойти учиться».
Inline режим бота в Telegram
// Конфиг клавиатуры const keyboard = [ [ < text: ‘Хочу кота’, // текст на кнопке callback_data: ‘moreKeks’ // данные для обработчика событий >], [ < text: ‘Хочу песика’, callback_data: ‘morePes’ >], [ < text: ‘Хочу проходить курсы’, url: ‘https://htmlacademy.ru/courses’ //внешняя ссылка >] ];
На нажатия первых двух кнопок мы ответим соответствующим сообщением в Телеграме, а последняя уведёт на внешний ресурс.
Чтобы отличить первые 2 кнопки, воспользуемся полем callback_data , где будем передавать тип кнопки. Для обработки нажатий добавим слушателя на событие callback_query , и в зависимости от значения query.data отправим нужную картинку к пользователю.
// Обработчик нажатий на клавиатуру bot.on(‘callback_query’, (query) => < const chatId = query.message.chat.id; let img = »; if (query.data === ‘moreKeks’) < // если кот img = ‘keks.png’; >if (query.data === ‘morePes’) < // если пёс img = ‘pes.png’; >if (img) < bot.sendPhoto(chatId, img, < // прикрутим клаву reply_markup: < inline_keyboard: keyboard >>); > else < bot.sendMessage(chatId, ‘Непонятно, давай попробуем ещё раз?’, < // прикрутим клаву reply_markup: < inline_keyboard: keyboard >>); > >);
Не забудем про возможные ошибки и предложим пользователю попробовать снова, если он ввёл что-то не то. Перезапустим бота и проверим — всё работает. Главное — не закрывать консоль, иначе бот перестанет отвечать.
Полный файл с кодом: index.js.
В следующей части как раз разберёмся, как загрузить и запустить бота на сервере, чтобы он работал, даже если ваш компьютер выключен.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше
Случайное число из диапазона
Допустим, вам зачем-то нужно целое случайное число от min до max . Вот сниппет, который поможет:
function getRandomInRange(min, max)
- Math.random () генерирует случайное число между 0 и 1. Например, нам выпало число 0.54 .
- (max — min + 1): определяет количество возможных значений в заданном диапазоне. 10 — 0 + 1 = 11 . Это значит, что у нас есть 11 возможных значений (0, 1, 2, . 10).
- Math.random () * (max — min + 1): умножает случайное число на количество возможных значений: 0.54 * 11 = 5.94 .
- Math.floor (): округляет число вниз до ближайшего целого. Так, Math.floor(5.94) = 5 .
- . + min: смещает диапазон так, чтобы минимальное значение соответствовало min . Но в нашем примере, так как min = 0 , это не изменит результат. Пример: 5 + 0 = 5 .
- Итак, в нашем примере получилось случайное число 5 из диапазона от 0 до 10.
Чтобы протестировать, запустите:
console.log(getRandomInRange(1, 10)); // Тест
- 7 сентября 2023
В чём разница между var и let
Если вы недавно пишете на JavaScript, то наверняка задавались вопросом, чем отличаются var и let , и что выбрать в каждом случае. Объясняем.
var и let — это просто два способа объявить переменную. Вот так:
var x = 10; let y = 20;
Переменная, объявленная через var , доступна только внутри «своей» функции, или глобально, если она была объявлена вне функции.
function myFunction() < var z = 30; console.log(z); // 30 >myFunction(); console.log(z); // ReferenceError
Это может создавать неожиданные ситуации. Допустим, вы создаёте цикл в функции и хотите, чтобы переменная i осталась в этой функции. Если вы используете var , эта переменная «утечёт» за пределы цикла и будет доступна во всей функции.
Переменные, объявленные с помощью let доступны только в пределах блока кода, в котором они были объявлены.
if (true) < let a = 40; console.log(a); // 40 >console.log(a); // ReferenceError
В JavaScript блок кода — это участок кода, заключённый в фигурные скобки <> . Это может быть цикл, код в условном операторе или что-нибудь ещё.
if (true) < let blockScoped = «Я виден только здесь»; console.log(blockScoped); // «Я виден только здесь» >// здесь переменная blockScoped недоступна console.log(blockScoped); // ReferenceError
Если переменная j объявлена в цикле с let , она останется только в этом цикле, и попытка обратиться к ней за его пределами вызовет ошибку.
- 30 августа 2023
Быстрый гайд по if, else, else if в JavaScript
Допустим, вы собираетесь идти на прогулку. Если на улице солнечно, вы возьмёте с собой солнечные очки.
Это можно описать с помощью оператора if .
let weather = «sunny»; if (weather === «sunny»)
А если погода не солнечная, а, скажем, дождливая, вы возьмете зонт.
Этот сценарий можно описать с помощью if-else .
let weather = «rainy»; if (weather === «sunny») < console.log(«Возьму солнечные очки»); >else
Условный оператор if-else if-else
Теперь представим, что у вас есть несколько вариантов транспорта для дороги на работу: машина, велосипед, общественный транспорт. Выбор будет зависеть от различных условий, например, погоды и времени суток. Логично, что в дождь безопаснее ехать на автобусе, а в хорошую погоду можно прокатиться на машине или велосипеде, если утро и пробки. То есть схема такая:
И всё это очень легко описывается кодом:
let weather = «sunny»; let time = «morning»; if (weather === «rainy») < // если дождь, то только так console.log(«Еду на автобусе»); >else if (time === «morning») < // если не дождь и утро console.log(«Еду на велике мимо пробок»); >else < // если второе не дождь и не утро console.log(«Еду на машине»); >
Ветвление только может показаться сложным, но вообще оно очень логичное, если понять, какие действия после каких условий выполняются. Разберитесь один раз и поймёте на всю жизнь, 100%.
- 30 августа 2023
Как исправить ошибки SyntaxError в JavaScript
Ошибки SyntaxError появляются, если разработчик нарушил правила синтаксиса JavaScript, например, пропустил закрывающую скобку или точку с запятой. Давайте посмотрим, что означает каждая ошибка и в чём может быть проблема.
Ошибка TypeError: что это и как её исправить
Ошибки TypeError появляются, когда разработчики пытаются выполнить операцию с неправильным типом данных. Давайте разберём несколько примеров: почему появилась ошибка и как её исправить.
3 способа объявить функцию в JavaScript
Функции в JavaScript можно объявить тремя способами: через декларативное объявление, функциональное выражение или с помощью стрелок. Звучит сложно, но на самом деле всё совсем не так.
Как сделать простой слайдер на HTML и JavaScript
Вы сверстали сайт и сделали его красивым с помощью CSS. Осталось добавить интерактива, и можно добавлять проект в портфолио.
«Оживить» на сайте можно что угодно: меню, модальные окна, корзину, пагинацию… В этой статье мы разберём слайдер — посмотрим, как его сделать на чистом JavaScript. Слайдер пригодится для раздела с отзывами, фотографиями сотрудников, изображениями товаров или чего-нибудь ещё — всё зависит только от вашей фантазии и проекта.
☝ Мы покажем лишь один из возможных вариантов. Это не эталонное решение, да в разработке и не бывает единственно верного способа решить задачу. Но код точно работает, поэтому можете скопировать его в свой проект.
Полезные команды для работы с Node.js
Перед тем как рассматривать полезные команды при работе с Node.js, её необходимо установить.
Команды помогают узнать версию Node.js,
node -h — показывает список всех доступных команд Node.js.
node -v , node —version — показывает установленную версию Node.js.
npm -h — показывает список всех доступных команд пакетного менеджера npm .
npm -v , npm —version — показывает установленную версию npm .
Команда npm update npm -g позволяет обновить версию npm .
npm list —depth=0 показывает список установленных пакетов.
Команда npm outdated —depth=0 покажет список установленных пакетов, которые требуют обновления. Если все пакеты обновлены, список будет пустым.
npm install package — позволяет установить любой пакет по его имени. Если при этом к команде добавить префикс -g пакет будет установлен глобально на весь компьютер.
Команда npm i package является укороченной альтернативой предыдущей команды.
npm uninstall package — удаляет установленный пакет по имени.
Команда npm list package — покажет версию установленного пакета, а команда npm view package version — последнюю версию пакета, которая существует.
Для работы с пакетным менеджером также пригодится файл package.json , который должен лежать в директории, с которой происходит работа в консоли.
Он содержит различные мета-данные, например, имя проекта, версия, описания и автор. Также он содержит список зависимостей, которые будут установлены, если вызвать из этой папки команду npm install .
Кроме этого он ещё имеет скрипты, которые вызывают другие команды консоли. Например, для этого файла вызов команды npm start вызовет запуск задачи Grunt с именем dev . А команда npm run build вызовет скрипт build , который запустит задачу в Grunt с именем build .
Во время работы часто возникает необходимость установить некоторые пакеты. Если установить пакет с префиксом —save , то он автоматически запишется в package.json в раздел dependencies . Такая же команда с префиксом —save-dev запишет пакет в раздел devDependencies .
nvm (илиNode Version Manager) — утилита, которая позволяет быстро менять версии Node.js.
Чтобы её установить, достаточно запустить скрипт
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
Теперь можно установить последнюю версию Node.js, например, 5.0 с помощью команды nvm install 5.0 . Чтобы начать использовать её, введите команду nvm use 5.0 . Таким образом, можно быстро переключаться между версиями, например, для тестирования.
Как составлять регулярные выражения
Регулярное выражение — это последовательность символов (селекторов). Оно используется для поиска и обработки строк, слов, чисел и других текстовых данных.
Регулярные выражения выручают при решении разных задач. Например, с их помощью легко искать и менять строки в коде. Но чаще всего регулярные выражения используют для валидации форм. Давайте посмотрим, как это делать.
Проверка типа интерфейса в TypeScript
Проверка типов интерфейса — одна из ключевых возможностей TypeScript. Она помогает убедиться, что объект или класс содержат необходимый набор свойств и методов, указанных в интерфейсе. Благодаря проверке типов вы можете писать более надёжный код, ведь часть ошибок будет найдена ещё на этапе компиляции.
Источник: htmlacademy.ru
Как в Телеграме ставить активные кнопки
Наверное самый распространённый вид кнопок, используемых в Телеграм. При нажатии на нее, пользователь увидит предупреждение, что ссылка ведет на сторонний ресурс. Если он подтвердит переход, браузер откроет URL-адрес. Пример использования такой кнопки-ссылки: пост с краткой выжимкой из большой статьи, ссылка ведет на полный вариант.
Как продвигать Telegram-канал?
Telega.in — лучшая биржа каналов с безопасной сделкой. Выбери каналы со статистикой и сделай массовую закупку постов. От 10 рублей!
Taplike — покупка активностей в ваш канал: подписчики, просмотры. Подготовь канал к продвижению. 100% гарантия безопасности от сервиса. От 10 рублей!
Click.ru — запуск официальной рекламы Telegram Ads (от €3000/месяц).
Switch-кнопки
Switch-кнопки имеют более сложный механизм работы. С помощью них можно осуществлять перенаправление внутри мессенджера. Например, переключить пользователя на чат с ботом для заказа товара или оформления подписки. Конечно, для этого можно самостоятельно найти бота и написать ему, но кнопка позволяет автоматизировать этот процесс и сделать его удобнее.
Callback-кнопки
Этот тип кнопок самый многофункциональный. При нажатии на нее может выполняться любое произвольное действие. Возможности callback-кнопок (или, как их еще называют, кнопок с обратной связью) ограничены только вашей фантазией. Они хорошо подойдут для решения таких простых задач, как автоматическая замена текста в сообщениях по условию.
Но также позволят реализовать и более сложные вещи. Например, навигацию по длинной статье на манер постраничной пагинации на сайте или даже создание календаря с возможностью выбора даты. Причем для добавления такого функционала в свой Телеграм-канал, необязательно иметь навыки программирования. В сети есть очень много готовых решений с инструкциями по их внедрению.
Кнопки с реакциями
Их можно использовать вместо опросов. Особенно, если не предполагается большого числа вариантов ответа, а нужно лишь узнать отношение подписчиков к посту. Большинство пользователей Телеграм наверняка с ними встречались. Обычно это две кнопки «Палец вверх» и «Палец вниз», но могут быть и другие. Например, можно использовать различные эмодзи или просто текст.
Когда пользователи будут выбирать нужную им реакцию, на кнопке будет отображаться, сколько человек на нее нажали.
Как поставить активные кнопки с помощью ControllerBot и BotFather
Добавление бота на канал
Настройка бота
- Чтобы вы могли использовать бота для создания постов, нужно добавить его в администраторы канала. Переходим в канал, нажимаем на вертикальное троеточие в верхнем правом углу экрана. Нас интересует пункт «Управление каналом», выбираем его.
- Далее заходим в раздел «Администраторы» и нажимаем «Добавить администратора». В поле поиска вписываем имя нашего бота. Поскольку бот не является нашим подписчиком, Телеграм предупредит об этом и запросит подтверждение действия. Нажимаем «ОК». Таким образом, бот автоматически подписывается на канал и назначается его администратором.
- Даем боту полные права и сохраняем.
- Теперь нам нужно отправить любой пост из канала ControllerBot. Если вы только недавно создали канал, и в нем еще нет ни одного поста, просто создайте новый. Затем жмем правой кнопкой на сообщении, выбираем «Переслать сообщение» и выбираем получателя – ControllerBot.
- В ответ бот попросит указать город, в котором вы проживаете, для настройки таймзоны. Это вам понадобится в будущем, чтобы создавать отложенные посты. Отправляем название города и, когда бот запросит подтверждение, нажимаем «Верно», если все правильно.
- ControllerBot ответит, что все прошло успешно и вы можете перейти в вашего бота для создания постов. Просто кликаем по его названию в сообщении. Для начала работы нажмите кнопку «Запустить».
Инструкция по использованию
Как сделать кнопку-ссылку на сайт с помощью бота
- Перед вами меню бота. Сейчас нам нужен пункт «Создать пост», жмем на него.
- Выбираем канал, в который отправится будущий пост.
- Набираем текст поста и нажимает на значок отправки.
- Наш пост пока не опубликован, а только подготовлен. Мы можем добавить к нему разные элементы, такие как видео и изображения, открыть комментарии, добавить реакции и URL-кнопки. Именно последние нам сейчас нужны. Выбираем этот пункт.
- Бот отправит нам в ответ инструкцию. Следуем ей. Сначала пишем текст, который будет отображен на самой кнопке. Через тире – ссылку, на которую подписчик перейдет по ее нажатии. Если нужно добавить несколько кнопок сразу, пишем их все в одну строку, разделяя пробелами и символом «|». По завершении нажимаем «Отправить».
- Чтобы опубликовать пост с кнопкой-ссылкой, нажмите «Далее», затем «Опубликовать». И после того, как бот спросит нас, уверены ли мы в своих действиях, снова жмем «Опубликовать».
- После этого пост появится в канале. Можно перейти и посмотреть, как это выглядит.
Как сделать кнопку с реакциями в Телеграмме
Делаем кнопку «Поделиться»
Создатель и автор сайта gruzdevv.ru. Практикующий маркетолог (PPC, SEO, SMM). Более 150 реализованных контентных сайтов. Онлайн-консультации и аудит проектов. Ссылка на приватный Телеграм-канал:
Источник: gruzdevv.ru