Гайд: создаем функционального Telegram-бота на Dart

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет! Я Саша Омельяненко, тимлид в отделе Flutter в AGIMA. На одном из наших проектов мне нужно было сделать бота для Telegram. Я нашел инструкции, как создать только базового бота. Но как оформить его, добавить кнопки и повесить на них Listener, я не нашел.

Пришлось разбираться с документацией Telegram, а это занятие не из приятных. Чтобы избавить вас от этого удовольствия, я решил написать гайд по разработке функционального Telegram-бота на Dart. Мы пройдем весь процесс от регистрации бота до его развертывания на удаленном сервере. Эта инструкция будет полезна Flutter-разработчикам уровня Junior и Middle.

Что будет уметь наш бот

Мы разработаем бота, который будет имитировать регистрацию пользователя и отдавать токен.

  1. При выполнении команды /start бот будет проверять, зарегистрирован пользователь или нет.

  2. Если пользователь не зарегистрирован, бот будет отправлять текст приветствия и выводить кнопки «Регистрация» и «Инструкция».

  3. Если пользователь нажимает кнопку «Регистрация», бот отправит запрос на бэк и получит токен.

  4. Если пользователь нажимает кнопку «Инструкция», бот покажет сообщение с инструкцией.

  5. Если пользователь зарегистрирован, то бот покажет текст и кнопку с инструкцией.

Теперь, когда мы определили функциональность нашего бота, приступим к его созданию.

1. Регистрация нового бота в Telegram

Для начала нужно зарегистрировать нового бота в Telegram. Для этого:

  1. Откройте Telegram и найдите бота BotFather.

  2. Напишите команду /newbot.

  3. Следуйте инструкциям BotFather для создания нового бота. Укажите имя бота и его Username.

  4. После успешной регистрации BotFather выдаст вам токен доступа (API Token). Сохраните его, он понадобится для взаимодействия с Telegram API.

2. Разработка бота

Теперь, когда у нас есть токен, можно приступить к написанию кода. Мы будем использовать библиотеку teledart для взаимодействия с Telegram API.

Создаем новый Dart-проект

dart create -t console-full dart_test_habr_bot

Устанавливаем зависимости

Добавьте зависимость teledart в ваш pubspec.yaml:

dependencies:
teledart: ^0.6.1

Архитектура

Здесь определим, из каких частей будет состоять бот.

  1. Инициализация.

  2. Оформление.

  3. Стартовые команды.

  4. Listener.

  5. Список команд.

Инициализация bin/dart_test_habr_bot.dart

  late TeleDart _teleDart;
  final telegram = Telegram(YOUR_BOT_TOKEN_FROM_BOT_FATHER);
  final username = (await telegram.getMe()).username;

  _teleDart = TeleDart(YOUR_BOT_TOKEN_FROM_BOT_FATHER, Event(username!));
  final repository = Repository();

  _teleDart.start();

Оформление

Тут мы можем пойти двумя путями. Оформить бота в проекте или использовать BotFather.

1. Через бота.

Добавим описание бота:

  1. Откройте BotFather и выберите команду /setdescription.

  2. Следуйте инструкциям для добавления описания вашему боту.

Добавим меню. Для этого используем команду /setcommands в BotFather. Укажите команды и их описания.

2. В проекте.

Добавим описание бота:

_teleDart.setMyShortDescription(
'Это бот для регистрации и управления аккаунтом', 'ru');

Добавление меню:

_teleDart.setMyCommands([
    BotCommand(command: '/start', description: '						
Источник: https://habr.com/ru/companies/agima/articles/837618/


Интересные статьи

Интересные статьи

Наверняка вы слышали о нашумевшей в своё время ИИ стримерше NeuroSama. Однако мое внимание привлекало не само шоу и эти нашумевшие самые «крутейшие» моменты стримов, а сам факт того, что нейросеть реа...
Как-то заглянув на GitHub, обнаружил Koka — язык функционального программирования со статической типизацией. Koka разрабатывается с 2012 года Daan Leijen в Microsoft Research, USA. Его исходники выкла...
Если вам нужен простенький Telegram bot, способный выполнять скрипты (написанные на любом языке) и отвечать текстом и картинками, то вам под кат. Там вы найдёте рассказ о бот-движке, кото...
В этой статье вы узнаете, как создать собственный GPS-трекер с помощью микроконтроллеров Pycom LoPy, а также научитесь настраивать одноканальный LoRa Nano-Gateway. Здесь я изложу клю...
Недавно я публиковал статью о том, как быстро настраивать npm-пакеты перед публикацией в opensource. В ней я разобрал настройку версионирования, CI, построение воркфлоу и удобный деплой на страни...