Google Apps Script библиотека для работы с методами API MAX с поддержкой вебхуков, созданием медиафайлов и клавиатур.
1dUzlK1qVuXOB8OOKgWazEBtCSbFRqIUv9F0-yQXM4K9xk6UlH-Ks2aOU
- Откройте Google Apps Script
- Создайте новый проект
- Добавьте библиотеку MaxBot:
- В редакторе нажмите на значок
+
рядом с "Библиотеки" - Введите ID библиотеки
- Выберите последнюю версию
- Нажмите "Добавить"
- В редакторе нажмите на значок
- Создайте проект Apps Script
- Добавьте файлы:
- Создайте файл
bot.gs
и скопируйте код изbot/bot.js
- Создайте файл
builders.gs
и скопируйте код изbot/builders.js
- Создайте файл
errors.gs
и скопируйте код изbot/errors.js
- Создайте файл
types.gs
и скопируйте код изbot/types.js
- Создайте файл
utils.gs
и скопируйте код изbot/utils.js
- Создайте файл
Инструкция, для получение токена на dev.max.ru
- Создайте нового бота
- Скопируйте токен доступа
// Создание экземпляра бота
const bot = MaxBot.init("YOUR_ACCESS_TOKEN");
// Получение информации о боте
const botInfo = bot.getMe();
console.log("Информация о боте:", botInfo);
// Отправка сообщения
bot.sendMessage({
text: "Привет, мир!",
chatId: "CHAT_ID",
});
// Создание экземпляра бота
const bot = MaxBot.init("YOUR_ACCESS_TOKEN");
// Обработка сообщений
bot.onMessage = function (message) {
const chatId = message.recipient.data.chat_id;
const text = message.body.text;
if (text === "/start") {
this.sendMessage({
text: "Добро пожаловать!",
chatId: chatId,
});
} else {
this.sendMessage({
text: `Вы написали: ${text}`,
chatId: chatId,
});
}
};
// Обработка callback кнопок
bot.onCallback = function (callback) {
const chatId = callback.chat_id;
const payload = callback.payload;
this.sendMessage({
text: `Нажата кнопка: ${payload}`,
chatId: chatId,
});
};
// Ваш кастомный класс (без наследования от Bot)
class MyBot {
constructor(accessToken, webhookUrl) {
this.accessToken = accessToken;
this.webhookUrl = webhookUrl;
}
onMessage(message) {
const chatId = message.recipient.data.chat_id;
const text = message.body.text;
if (text === "/start") {
this.sendMessage({
text: "Добро пожаловать!",
chatId: chatId,
});
} else {
this.sendMessage({
text: `Вы написали: ${text}`,
chatId: chatId,
});
}
}
onCallback(callback) {
const chatId = callback.chat_id;
const payload = callback.payload;
this.sendMessage({
text: `Нажата кнопка: ${payload}`,
chatId: chatId,
});
}
// Дополнительные методы
customMethod() {
console.log("Кастомный метод");
}
}
// Создание бота через функцию-обертку
const webhookUrl = "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec";
const bot = MaxBot.createBot("YOUR_ACCESS_TOKEN", MyBot, webhookUrl);
// Использование кастомных методов
bot.customMethod();
// Создание бота
const bot = MaxBot.init("YOUR_ACCESS_TOKEN");
// Добавление обработчиков через Mixin
const enhancedBot = MaxBot.withCustomHandlers(bot, {
onMessage: function (message) {
const chatId = message.recipient.data.chat_id;
const text = message.body.text;
if (text === "/start") {
this.sendMessage({
text: "Добро пожаловать!",
chatId: chatId,
});
}
},
onCallback: function (callback) {
const chatId = callback.chat_id;
const payload = callback.payload;
this.sendMessage({
text: `Нажата кнопка: ${payload}`,
chatId: chatId,
});
},
});
// Создание экземпляра бота
const bot = MaxBot.init("YOUR_ACCESS_TOKEN");
Создайте экземпляр бота и назначьте обработчики событий:
// Обработка сообщений
bot.onMessage = function (message) {
// Ваша логика обработки сообщений
const chatId = message.recipient.data.chat_id;
const text = message.body.text;
// Пример обработки команды /start
if (text === "/start") {
this.sendMessage({
text: "Добро пожаловать!",
chatId: chatId,
});
}
};
// Обработка callback кнопок
bot.onCallback = function (callback) {
// Ваша логика обработки callback кнопок
const chatId = callback.chat_id;
const payload = callback.payload;
this.sendMessage({
text: `Нажата кнопка: ${payload}`,
chatId: chatId,
});
};
function doPost(e) {
try {
const data = JSON.parse(e.postData.contents);
bot.handleWebhook(data);
return ContentService.createTextOutput(
JSON.stringify({
status: "success",
message: "Webhook processed",
})
);
} catch (error) {
console.error("Ошибка обработки вебхука:", error);
return ContentService.createTextOutput(
JSON.stringify({
status: "error",
message: "Webhook processing failed",
error: error.message,
})
);
}
}
- Нажмите "Развернуть" → "Новое развертывание"
- Выберите тип: "Веб-приложение"
- Настройте доступ:
- Выполнение: "От моего имени"
- Доступ: "Все пользователи"
- Нажмите "Развернуть"
- Скопируйте URL веб-приложения
// Замените YOUR_SCRIPT_ID на ID вашего скрипта
const webhookUrl = "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec";
// Установка вебхука
bot.setWebhook(webhookUrl);
// Проверка установки
const webhooks = bot.getWebhooks();
console.log("Установленные вебхуки:", webhooks);
// Удаление вебхука (если нужно)
bot.deleteWebhook();
Полная документация всех доступных методов, билдеров и утилит находится в файле metods.md.
Включает в себя:
- 🔧 API методы (бот, чаты, участники, сообщения, вебхуки, файлы)
- 🛠️ Билдеры (клавиатуры, медиа, команды)
- ❌ Обработка ошибок
- 🔧 Утилиты
- 📖 Дополнительная информация
Смотрите папку examples/
для подробных примеров:
bot.js
- Основной пример ботаmedia.js
- Работа с медиафайламиkeyboard.js
- Создание клавиатурcommand.js
- Обработка командerror-handling.js
- Обработка ошибокinheritance.js
- Пример создания кастомного бота с помощью createBot()
// Простое сообщение
bot.sendMessage({
text: "Привет!",
chatId: "CHAT_ID",
});
// Сообщение с форматированием
bot.sendMessage({
text: "**Жирный текст**",
chatId: "CHAT_ID",
format: "markdown",
});
// Сообщение с клавиатурой
const keyboard = bot.keyboard
.callback("Кнопка 1", "btn1")
.callback("Кнопка 2", "btn2")
.build();
bot.sendMessage({
text: "Выберите:",
chatId: "CHAT_ID",
keyboard,
});
// Фото
const photo = bot.photo
.url("https://example.com/photo.jpg")
.caption("Красивое фото!")
.build();
bot.sendMessage({
text: photo.caption,
chatId: "CHAT_ID",
photo: photo.photo,
});
// Видео
const video = bot.video
.url("https://example.com/video.mp4")
.caption("Интересное видео")
.build();
bot.sendMessage({
text: video.caption,
chatId: "CHAT_ID",
video: video.video,
});
// Аудио
bot.sendMessage({
text: "Музыка",
chatId: "CHAT_ID",
audio: "https://example.com/audio.mp3",
title: "Название песни",
performer: "Исполнитель",
});
// Файл
bot.sendMessage({
text: "Документ",
chatId: "CHAT_ID",
file: "https://example.com/document.pdf",
});
// Местоположение
bot.sendMessage({
text: "Местоположение",
chatId: "CHAT_ID",
latitude: 55.7558,
longitude: 37.6176,
title: "Москва",
address: "Красная площадь",
});
// Контакт
bot.sendMessage({
text: "Контакт",
chatId: "CHAT_ID",
phone_number: "+79001234567",
first_name: "Иван",
last_name: "Иванов",
});
- Markdown:
format: 'markdown'
- HTML:
format: 'html'
callback
- Callback кнопкаlink
- Ссылкаrequest_contact
- Запрос контактаrequest_geo_location
- Запрос геолокацииopen_app
- Открытие приложенияmessage
- Отправка сообщения
- Квоты выполнения: 6 часов в день
- Время выполнения: максимум 6 минут на запрос
- HTTP запросы: максимум 20,000 в день
- Размер кода: максимум 50 МБ
- Откройте редактор Apps Script
- Перейдите в "Выполнения"
- Выберите функцию и нажмите "Просмотр выполнения"
- Проверьте логи в консоли
MIT License - см. файл LICENSE для подробностей.
Если у вас есть вопросы или проблемы:
- Проверьте логи выполнения в Apps Script
- Убедитесь, что токен правильный
- Проверьте настройки веб-приложения
- Обратитесь к документации API MAX: https://dev.max.ru/docs-api
Примечание: Этот проект не является официальным и не связан с MAX. Используйте на свой страх и риск.