Как сделать кнопку start в боте Телеграмм

Содержание

Сегодня будем делать бота — это отличное (и быстрое) занятие, которое развивает уставший мозг и даёт возможность отправить друзьям ссылочку со словами «Смотри, это моё».

Для работы понадобятся

  • Редактор кода, чтобы писать код. Если не знаете, какой выбрать — мы уже рассказывали. Если не умеете писать код, то вот инструкция, как его написать и запустить.
  • Node.js любой версии, выше 0.12. Нужно, чтобы библиотека для ботов заработала. Как установить Node.js.
  • Консоль. Или встроенный в систему вариант, или какой-нибудь другой.
  • VPN. Возможно, но не факт, потому что Телеграм работает не везде.

Шаг 1. Регистрируем бота

Придумываем название и имя боту. Название — то, как он будет подписан в списке контактов. Имя — строка, по которой его можно будет найти. Обратите внимание, что имя должно оканчиваться на bot . В ответ мы получим токен — длинную последовательность символов, которая пригодится нам в будущем. Мы назвали бота echoKeksBot , но вам придётся придумать другое название, потому что это уже занято. Извините.

Обработка команды /start в python telegram bot

Шаг 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 кнопки: «Хочу кота», «Хочу пёсика» и «Пойти учиться».

// Конфиг клавиатуры 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)

  1. Math.random () генерирует случайное число между 0 и 1. Например, нам выпало число 0.54 .
  2. (max — min + 1): определяет количество возможных значений в заданном диапазоне. 10 — 0 + 1 = 11 . Это значит, что у нас есть 11 возможных значений (0, 1, 2, . 10).
  3. Math.random () * (max — min + 1): умножает случайное число на количество возможных значений: 0.54 * 11 = 5.94 .
  4. Math.floor (): округляет число вниз до ближайшего целого. Так, Math.floor(5.94) = 5 .
  5. . + min: смещает диапазон так, чтобы минимальное значение соответствовало min . Но в нашем примере, так как min = 0 , это не изменит результат. Пример: 5 + 0 = 5 .
  6. Итак, в нашем примере получилось случайное число 5 из диапазона от 0 до 10.

Чтобы протестировать, запустите:

console.log(getRandomInRange(1, 10)); // Тест

  • 7 сентября 2023

В чём разница между var и let

В чём разница между 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, 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

Ошибки SyntaxError появляются, если разработчик нарушил правила синтаксиса JavaScript, например, пропустил закрывающую скобку или точку с запятой. Давайте посмотрим, что означает каждая ошибка и в чём может быть проблема.

Ошибка TypeError: что это и как её исправить

Ошибка TypeError: что это и как её исправить

Ошибки TypeError появляются, когда разработчики пытаются выполнить операцию с неправильным типом данных. Давайте разберём несколько примеров: почему появилась ошибка и как её исправить.

3 способа объявить функцию в JavaScript

3 способа объявить функцию в JavaScript

Функции в JavaScript можно объявить тремя способами: через декларативное объявление, функциональное выражение или с помощью стрелок. Звучит сложно, но на самом деле всё совсем не так.

Как сделать простой слайдер на HTML и JavaScript

Как сделать простой слайдер на HTML и JavaScript

Вы сверстали сайт и сделали его красивым с помощью CSS. Осталось добавить интерактива, и можно добавлять проект в портфолио.

«Оживить» на сайте можно что угодно: меню, модальные окна, корзину, пагинацию… В этой статье мы разберём слайдер — посмотрим, как его сделать на чистом JavaScript. Слайдер пригодится для раздела с отзывами, фотографиями сотрудников, изображениями товаров или чего-нибудь ещё — всё зависит только от вашей фантазии и проекта.

☝ Мы покажем лишь один из возможных вариантов. Это не эталонное решение, да в разработке и не бывает единственно верного способа решить задачу. Но код точно работает, поэтому можете скопировать его в свой проект.

Полезные команды для работы с Node.js

Полезные команды для работы с 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

Проверка типов интерфейса — одна из ключевых возможностей TypeScript. Она помогает убедиться, что объект или класс содержат необходимый набор свойств и методов, указанных в интерфейсе. Благодаря проверке типов вы можете писать более надёжный код, ведь часть ошибок будет найдена ещё на этапе компиляции.

Источник: htmlacademy.ru

Создание телеграм-бота с веб-интерфейсом при помощи Python и Replit

Если вы когда-либо пользовались онлайн-форумом, вы, возможно, видели, что иногда есть способы публиковать сообщения не только непосредственно на форуме, но и, например, через электронную почту.

В данной статье мы создадим общедоступную доску объявлений. Особенностью этой доски будет то, что пользователи смогут посылать свои объявления Telegram-боту, не заходя на сам сайт.

Сообщения будут просто содержать текст, но мы предоставим дополнительную информацию о том, как использовать другие данные, например, имена пользователей. Реализацию этого мы оставим вам в качестве упражнения по расширению функциональности.

Необходимые приготовления

Для получения максимальной пользы от этого руководства читателю нужно:

  • знать язык программирования Python
  • иметь аккаунт в Телеграм и установить клиентскую часть на свой компьютер
  • иметь аккаунт в Replit или создать его прямо сейчас.

Также было бы полезно, если бы вы были знакомы с базой данных Replit, но это не критично.

Регистрация бота

Для начала нам нужно зарегистрировать нашего бота в Telegram, чтобы сгенерировать учетные данные, которые мы будем использовать для подключения к Telegram API. Каждый бот должен быть привязан к конкретной учетной записи пользователя. Это можно сделать с помощью официального управляющего бота Telegram под названием «BotFather».

bot father

Для активации BotFather нажмите на кнопку Start :

bot father start

Для начала рабочего процесса создания нового бота мы должны отправить в BotFather команду /newbot .

Бот у нас спросит следующие данные:

Замечание: полезно иметь короткое имя пользователя, чтобы людям было удобно его вводить. Особенно, если вы планируете добавить встроенный режим.

token

Как только мы ответим на все вопросы, BotFather отправит нам наш токен аутентификации, который будет выглядеть примерно так:

Обратите внимание, что вся строка (до двоеточия и после) является токеном.

Создание интерфейса бота

Теперь мы можем приступить к написанию той части программы, которая обрабатывает запросы из Telegram. Создадим новую repl-среду, а в качестве языка программирования выберем Python.

new repl

Наш бот должен взаимодействовать с Telegram. Для этого нам понадобится доступ к Telegram REST API. Есть много способов сделать это, но в рамках данной статьи мы будем использовать удобную библиотеку, обернутую обернута вокруг API.

Прежде чем мы продолжим, нам нужно сделать наш токен доступным для использования нашим ботом. Создайте переменную среды под названием TOKEN , щелкнув значок замка на боковой панели, как показано ниже, и вставьте свой токен бота, который вы получили ранее, например 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5 :

env variables

Это гарантирует, что наш токен доступен как переменная среды и что к нему не смогут получить доступ люди, имеющие доступ к нашей среде repl (в бесплатной версии она открыта для всех, — прим. переводчика).

Создание скелета бота

Теперь, когда все настроено, мы можем приступить к программированию! Начнем с нашего файла main.py :

import os from telegram import Update #upm package(python-telegram-bot) from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext #upm package(python-telegram-bot) def help_command(update: Update, context: CallbackContext) -> None: htext = »’ Welcome Send a message to store it. Send /fetch to retrieve the most recent message»’ update.message.reply_text(htext) def main(): updater = Updater(os.getenv(«TOKEN»)) dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler(«start», help_command)) dispatcher.add_handler(CommandHandler(«help», help_command)) updater.start_polling() updater.idle() if __name__ == ‘__main__’: main()

Сначала мы импортируем модуль os , чтобы получить доступ к токену как переменной окружения.

Затем мы импортируем некоторые классы из библиотеки Telegram.

Комментарии, начинающиеся с #upm , не являются обязательными. Они используются Replit для загрузки правильного пакета. В общем случае это не нужно, но здесь необходимо, потому что подобных библиотек Telegram очень много.

Функция help_command запускается всякий раз, когда пользователь отправляет нам команду /start или /help . Команда /start также выполняется автоматически, когда новый пользователь запускает ваш бот (как мы ранее запускали BotFather ). Бот будет знать, как использовать эту функцию, потому что мы сообщим ему об этом позже в теле функции main .

В функции main мы инициализируем экземпляр класса updater , который использует наш токен.

updater = Updater(os.getenv(«TOKEN»))

Updater — это класс, который будет постоянно проверять Telegram на наличие новых сообщений в нашем боте.

Когда updater получает новое сообщение, он передает его в класс dispatcher . Тот проверяет, есть ли у нас подходящий обработчик для данного сообщения. Как уже упоминалось выше, нужно задать обработчик для команд /start и /help . Мы cделаем это при помощи функции add_handler , например:

dispatcher.add_handler(CommandHandler(«start», help_command))
dispatcher.add_handler(CommandHandler(«help», help_command))

Чтобы не усложнять задачу, команда /start и команда /help имеют здесь один и тот же обработчик, но при желании для обработки каждой из них вы можете использовать разные функции.

Еще по теме:  Война жесть убийства в телеге

Затем нам нужно сказать классу updater , чтобы он начал проверку новых сообщений. Мы это сделаем при помощи следующей строки.

updater.start_polling()

Важно знать, что start_polling — это неблокирующая функция. Это означает, что код в ней не прекращает выполнение. Он будет исполняться, пока программа не завершится.

Другими словами, если мы оставим это в качестве последней строки функции main , код будет выполнен, а затем немедленно завершится, потому что больше ничего не блокирует его. Поэтому, чтобы наш бот не прекращал прослушку, мы используем строку updater.idle() , чтобы заблокировать скрипт, пока мы слушаем.

Функционал для логирования

Согласно тексту справки, бот должен уметь делать две вещи:

  1. Если вы отправляете сообщение боту, он должен где-то его сохранить.
  2. При отправке боту команды /fetch он должен отправить вам последнее сообщение.

Для этого мы будем использовать встроенную в Replit базу данных ключ-значение. Начнем с импорта API:

from replit import db

Модуль db — это объект, который ведет себя как словарь, но сохраняет свое содержимое между запусками. Он также сериализует свои ключи в виде строк.

Как сделать бота в Телеграмме

бот

Основной «фишкой» мессенджера Телеграмм считается безопасность. Но есть ещё одна вещь, за которую мы все любим этот мессенджер – боты. Они существенно облегчают жизнь. Кому не хочется спихнуть на другого всю нудную и унылую работу? А после того, как разработчики предоставили пользователям возможность создать бота в Телеграмм самостоятельно, всеобщий восторг только усилился. Как же создать своего?

Зачем нужны боты?

Что такое боты и зачем они нужны? Боты – это цифровые роботы, которые могут выполнять рутинные задачи, тем самым облегчая жизнь пользователю. Чаще всего они используются для поиска информации или её отфильтровывания. С их помощью также можно подтянуть с разных ресурсов нужные новости или курсы валют, перевести текст и сделать массовую рассылку. Список возможностей достаточно широк, хоть и не безграничен. Больше всего они нужным тем, кто не хочет тратить своё свободное время на выполнение однообразных задач.

Создаём бота. Пошаговая инструкция

1. Прежде чем сесть за создание бота для Telegram, нужно понять, зачем он нужен. Какую задачу должен выполнять? Какова цель его существования? Для разных целей используются разные языки программирования. Но не пугайтесь, элементарного бота можно создать, имея даже поверхностные представления о том, как пишется код .

3. Клацаете на результат поиска, чтобы открыть окно чата с BotFather, а затем добавляете его в список контактов. Для этого нужно:

Перейти в меню, нажав на кнопку в виде 3 точек.

меню

Выбрать пункт “Share my contact”.

пункт “Share my contact”

Нажать ОК в открывшемся уведомлении о том, что вы предоставляете BotFather данные о вашем номере телефона.

дополнительный запрос

Если вы всё сделаете правильно, BotFather пришлет сообщение со ссылкой на мануал и описанием основных команд. После прочтения этого сообщения у вас появится возможность создать нового бота.

список ссылок

Есть и альтернативный способ начать взаимодействовать с BotFather. Нужно всего лишь нажать на кнопку “Start” в открывшемся окне чата.

кнопка “Start”

Сделав это, вы дадите BotFather команду “/start”, что также откроет доступ к остальным функциям и мануалу.

команда “/start”

4. Вводите в чат команду “/newbot” (без кавычек). Эта команда запустит процесс создания бота.

команда “/newbot”

5. В ответ на это BotFather запросит 2 имени. Сначала – само имя (name), которое будет отображаться в строке контактов, когда вы добавите его в друзья. Например, назовём нашего нового бота Hii.

имя бота

Затем Телеграмм запросит уникальное имя – то, по которому вы сможете найти бота в поиске. При этом уникальное имя обязательно должно заканчиваться на “bot” и не иметь аналогов в Телеграмм. Попробуем ввести HiiBot.

уникальное имя

Как видно из подчеркнутого красным текста, имя HiiBot уже занято, необходимо поискать другое, уникальное имя для нашего бота. Попробуем HiieBot.

имя использовать нельзя

Сработало! Мы успешно создали бота. Но чтобы он полноценно заработал, его нужно «написать», то есть обучить необходимым командам.

6. Для этого нужно прокрутить последнее полученное от BotFather сообщение до конца и скопировать уникальный токен (token) в буфер обмена или любой текстовый файл. Это – токен API, с помощью которого вы сможете вносить изменения в своего робота.

уникальный токен

8. Теперь откройте чат с Chatfuel и запустите его при помощи кнопки “Start”.

запуск бота

9. Когда эта команда будет выполнена, Chatfuel поприветствует вас и попросит выбрать язык. Выберите тот, на котором вам будет удобнее работать. В нашем примере это – русский.

выбор языка

10. Теперь следуйте подсказкам. Chatfuel потребует ввести команду “/addbot” (без кавычек). Введите её, чтобы бот затребовал токен.

запуск первой команды

11. После ввода команды появятся несколько подсказок, которые сообщат о том, как получить токен API. Но у вас он уже есть и скопирован в буфер обмена. Поэтому просто прокручивайте подсказки вниз и вставляйте токен в поле для ввода сообщений.

подсказки

12. Если никаких ошибок не было, вы увидите сообщение о том, что Chatfuel установлен на вашего бота, а это значит, что теперь его можно обучать и кастомизировать. Для этого достаточно перейти по ссылке в сообщении. Открывайте её и смотрите, какие возможности вам доступны!

завершение установки

Бот создан. Что теперь с ним делать?

Конечно, создание бота – это только первый шаг. Пока бот не обучен ничему, он практически бесполезен. Для того чтобы обучить нового бота каким-либо командам, нужны базовые знания языков программирования. Но тем, кто пока их не освоил, можно воспользоваться подсказками и командами, содержащимися по ссылке в Chatfuel. Мы не будем описывать их здесь подробно – их слишком много, к тому же они отлично описаны прямо в чате. С их помощью, конечно, не создашь бота мечты, однако можно обучить его каким-то элементарным полезным вещам. Но надо же с чего-то начинать?

Источник: www.allmessengers.ru

Рейтинг
( Пока оценок нет )
Загрузка ...