Примеры создания ботов

Вы можете изучить демонстрационных ботов, которые размещены в наших репозиториях

Примеры создания Hello-бота с помощью библиотек JavaScript и Golang

В этом разделе разберём пример реализации простого бота с использованием библиотеки MAX Bot API — напишем код для Hello Bot, чтобы научить его здороваться с пользователями

Больше примеров смотрите в наших репозиториях на GitHub:

  1. Создайте новый проект в терминале и установите библиотеку:
BASH
# Создание папки
mkdir my-first-bot
# Переход в созданную папку
cd my-first-bot

# Установка MAX Bot API

# Для npm
npm install --save @maxhub/max-bot-api
# Для yarn
yarn add @maxhub/max-bot-api
# Для pnpm
pnpm add @maxhub/max-bot-api
# Для deno
deno add npm:@maxhub/max-bot-api

# Установка и настройка TypeScript (опционально)
yarn add -D typescript
npx tsc --init
BASH
# Создание папки для исходного кода Golang-модуля
mkdir my-first-bot
# Переход в созданную папку
cd my-first-bot

# Запуск модуля — в результате будет создан файл `go.mod` для отслеживания зависимостей вашего кода

go mod init first-max-bot

# Установка библиотеки для работы с MAX API на Golang

go get github.com/max-messenger/max-bot-api-client-go/v2
  1. Создайте файл:

    • для JavaScript — bot.js, для TypeScript — bot.ts
    • для Golang — bot.go
  2. Обеспечьте доступ к методам и утилитам

JS
// Создание объекта класса Bot, который обеспечит доступ к методам и утилитам

filename="bot.js"
import { Bot } from '@maxhub/max-bot-api';
const bot = new Bot(process.env.BOT_TOKEN); // Токен, полученный при регистрации бота в MAX
bot.start(); // Запуск получения обновлений
GO
// Создание функции main в пакете main — он обеспечит доступ к методам и утилитам

filename="bot.go"
package main

import (
	"context"
	"fmt"
	"net/http"
	"os"
	"time"

	maxbot "github.com/max-messenger/max-bot-api-client-go/v2"
)

func main() {
	ctx := context.Background()
	opts := []maxbot.Opt{
		maxbot.WithHTTPClient(&http.Client{Timeout: 10 * time.Second}),
	}
	api, err := maxbot.NewApi(os.Getenv("TOKEN"), opts...)
	if err != nil {
		fmt.Println("api initial err:", err)
		return
	}
	info, err := api.Bots.GetMyInfo(ctx)
	fmt.Printf("Get me: %#v %#v", info, err)
}
  1. Определите функциональность приветствия — бот будет отвечать на команду /hello
JS
filename="bot.js"
import { Bot } from '@maxhub/max-bot-api';
const bot = new Bot(process.env.BOT_TOKEN);

// Определение команд, которые пользователь будет видеть в чате с ботом
bot.api.setMyCommands([
  {
    name: 'hello',
    description: 'Поприветствовать бота',
  },
]);  

// Обработчик команды '/hello'
bot.command('hello', (ctx) => {
  return ctx.reply('Привет! ✨');
});
bot.start();
GO
filename="bot.go"
package main
import (
    "fmt"
    maxbot "github.com/max-messenger/max-bot-api-client-go"
)

func main() {
    api := maxbot.New(os.Getenv("TOKEN"))
    info, err := api.Bots.GetBot()
    fmt.Printf("Get me: %#v %#v", info, err)

    ctx, cancel := context.WithCancel(context.Background())
    go func() {
        exit := make(chan os.Signal)
        signal.Notify(exit, os.Kill, os.Interrupt)
        <-exit
        cancel()
    }()
    // Чтение из канала с обновлениями
    for upd := range api.GetUpdates(ctx) { 
        // Определение типа полученного обновления
        switch upd := upd.(type) { 
        case *schemes.MessageCreatedUpdate:
            // Отправка сообщения 
            _, err := api.Messages.Send(maxbot.NewMessage().SetChat(upd.Message.Recipient.ChatId).SetText("Привет! ✨"))
        }
    }
}
  1. Протестируйте бота — отправьте команду /hello

Чат с Hello Bot Чат с Hello Bot Чат с Hello Bot

Готово! Вы написали простого и дружелюбного Hello Bot

Воспользуйтесь возможностями и инструментами платформы MAX, чтобы запустить на платформе собственные проекты


ℹ️ Если у вас возникли вопросы, посмотрите раздел с ответами