View Categories

Описание классов

Документация FastBot2 #

Библиотека может показаться сложной в использовании, как минимум гораздо сложнее FastBot первой версии =) Но это не просто так: FastBot2 позволяет использовать все возможности Телеграм и написать бота почти любой сложности, а также имеет очень удобные инструменты для обработки текстовых данных от юзеров. Для разработки рекомендуется использовать "взрослую" среду разработки типа VS Code (+Platformio), подсказки методов классов практически полностью заменят вам данную документацию.

На этой странице находится полный перечень всех классов и их методов.

Настройки компиляции #

Объявляются перед подключением библиотеки

#define FB_NO_FILE          // убрать поддержку работы с файлами
#define FB_USE_LOG Serial   // выводить логи ошибок

Указатель на текущий объект #

Внутри подключаемых обработчиков можно использовать fb::thisBot - указатель на текущий объект бота, который вызвал обработчик

Класс бота #

FastBot2Client

Виртуальный класс без связи. Остальные классы бота наследуют его!

// установить proxy
void setProxy(const char* host, uint16_t port);

// установить proxy
void setProxy(const IPAddress& ip, uint16_t port);

// удалить proxy
void clearProxy();

// ============================== SYSTEM ==============================
// разрешение и запрет типов обновлений
Updates updates;

// установить таймаут ожидания ответа сервера (умолч. 2000 мс)
void setTimeout(uint16_t timeout);

// ============================== SYSTEM ==============================

// установить токен
void setToken(const String& token);

// получить токен
const String& getToken();

// установить лимит памяти на ответ сервера (библиотека начнёт пропускать сообщения), умолч. 20000
void setMemLimit(size_t limit);

// установить лимит - кол-во сообщений в одном обновлении (умолч. 3)
void setLimit(uint8_t limit = 3);

// установить режим и период опроса (умолч. Poll::Sync и 4000 мс)
void setPollMode(Poll mode = Poll::Sync, uint16_t period = 4000);

// получить режим опроса
Poll getPollMode();

// пропустить непрочитанные сообщения, отрицательное число, соответствует количеству пропусков. Вызывать однократно
//  https://core.telegram.org/bots/api#getupdates
void skipUpdates(int32_t offset = -1);

// пропустить следующее сообщение (сдвинуть оффсет на 1)
void skipNextMessage();

// id последнего отправленного сообщения от бота
uint32_t lastBotMessage();

// авто-инкремент update offset (умолч. true). Если отключен - нужно вызывать skipNextMessage() в update
void autoIncrement(bool incr);

// автоматически отвечать на query, если юзер не ответил в update (умолч. true)
void autoQuery(bool query);

// покинуть цикл разбора updates, вызывать в обработичке update
void exitUpdates();

// запустить (по умолчанию уже запущен)
void begin();

// остановить
void end();

// указать наличие подключения к Интернет (true). При отключенном апдейты не будут запрашиваться
void setOnline(bool online);

// ============================== ATTACH ==============================

// подключить обработчик обновлений вида void cb(Update& u) {}
void attachUpdate(CallbackUpdate callback);

// отключить обработчик обновлений
void detachUpdate();

// подключить обработчик результата вида void cb(gson::Entry& r) {}
void attachResult(CallbackResult callback);

// отключить обработчик результата
void detachResult();

// подключить обработчик сырого ответа сервера void cb(Text response) {}
void attachRaw(CallbackRaw callback);

// отключить обработчик ответа сервера
void detachRaw();

// подключить обработчик ошибки сервера void cb(Text error) {}
void attachError(CallbackError callback);

// отключить обработчик ошибки
void detachError();
// ============================== TICK ==============================

// тикер, вызывать в loop. Вернёт true, если был обработан Update
bool tick();

// проверить обновления вручную (принудительно синхронно), вызовется обработчик
bool tickManual();

// система ждёт ответа с обновлениями
bool isPolling();

// отправить запрос на обновление
Result getUpdates(bool wait, bool allowLongPool = true);

// запросить перезагрузку устройства
void reboot();

// можно перезагрузить устройство
bool canReboot();

// ============================== SEND ==============================

// ответить на callback. Можно указать текст и вызвать alert
fb::Result answerCallbackQuery(const Text& id, Text text = Text(), bool show_alert = false, bool wait = true);

// переслать сообщение
fb::Result forwardMessage(const fb::MessageForward& m, bool wait = true);

// отправить сообщение
fb::Result sendMessage(const fb::Message& m, bool wait = true);

// отправить геолокацию
fb::Result sendLocation(const fb::Location& m, bool wait = true);

// ============================== FILE ==============================
// отправить файл, тип указывается в fb::File
fb::Result sendFile(const fb::File& m, bool wait = true);

// редактировать файл
fb::Result editFile(const fb::FileEdit& m, bool wait = true);

// получить прямую ссылку на файл
String getFileLink(Text fileID);

// получить путь к файлу относительно корня api
String getFilePath(Text fileID);

// обновить прошивку из файла, указать id юзера для отправки уведомления
void updateFlash(fb::DocumentRead document, Text user_id = "");

// обновить FS из файла, указать id юзера для отправки уведомления
void updateFS(fb::DocumentRead document, Text user_id = "");

// скачать файл по id
fb::Fetcher downloadFile(const Text& fileID);

// скачать файл
fb::Fetcher downloadFile(fb::DocumentRead document);

// ============================== SET ==============================

// отправить статус "набирает сообщение" на 5 секунд
fb::Result setTyping(Value chatID, bool wait = true);

// установить заголовок чата
fb::Result setChatTitle(Value chatID, Text title, bool wait = true);

// установить описание чата
fb::Result setChatDescription(Value chatID, Text description, bool wait = true);

// установить подсказки команд бота
fb::Result setMyCommands(const fb::MyCommands& commands, bool wait = true);

// удалить подсказки команд бота
fb::Result deleteMyCommands(bool wait = true);

// установить имя бота
fb::Result setMyName(const Text& name, bool wait = true);

// установить описание бота
fb::Result setMyDescription(const Text& description, bool wait = true);

// ============================== PIN ==============================

// закрепить сообщение
fb::Result pinChatMessage(Value chatID, Value messageID, bool notify = true, bool wait = true);

// открепить сообщение
fb::Result unpinChatMessage(Value chatID, Value messageID, bool wait = true);

// открепить все сообщения
fb::Result unpinAllChatMessages(Value chatID, bool wait = true);

// ============================== EDIT ==============================

// редактировать текст
// https://core.telegram.org/bots/api#editmessagetext
fb::Result editText(const fb::TextEdit& m, bool wait = true);

// редактировать заголовок (у сообщений с медиафайлом)
// https://core.telegram.org/bots/api#editmessagecaption
fb::Result editCaption(const fb::CaptionEdit& m, bool wait = true);

// редактировать меню
// https://core.telegram.org/bots/api#editmessagereplymarkup
fb::Result editMenu(const fb::MenuEdit& m, bool wait = true);

// редактировать геолокацию
fb::Result editLocation(const fb::LocationEdit& m, bool wait = true);

// остановить геолокацию
fb::Result stopLocation(const fb::LocationStop& m, bool wait = true);

// ============================== DELETE ==============================

// удалить сообщение
fb::Result deleteMessage(Value chatID, Value messageID, bool wait = true);

// удалить сообщения
fb::Result deleteMessages(Value chatID, uint32_t* messageIDs, uint16_t amount, bool wait = true);

// ============================== MANUAL ==============================

// отправить команду вручную
Result sendCommand(const __FlashStringHelper* cmd, const String& json, bool wait = true);

// отправить команду вручную без параметров
Result sendCommand(const __FlashStringHelper* cmd, bool wait = true);

// начать пакет для ручной отправки в API
Packet beginPacket(const __FlashStringHelper* cmd);

// отправить пакет
Result sendPacket(Packet& packet, bool wait = true, bool* sent = nullptr);
FastBot2

Версия для esp8266/esp32. Наследует FastBot2Client и FastBot2Client

FastBot2();

Чтение #

fb::Update

// fb::Update::Type
Message
EditedMessage
ChannelPost
EditedChannelPost
BusinessConnection
BusinessMessage
EditedBusinessMessage
DeletedBusinessMessages
MessageReaction
MessageReactionCount
InlineQuery
ChosenInlineResult
CallbackQuery
ShippingQuery
PreCheckoutQuery
Poll
PollAnswer
MyChatMember
ChatMember
ChatJoinRequest
ChatBoost
RemovedChatBoost
// тип апдейта
Type type();

// id апдейта
uint32_t id();

// ================ QUERY ================

// это query
bool isQuery();

// query
QueryRead query();

// ================ MESSAGE ================

// сообщение
MessageRead message();

// это сообщение
bool isMessage();

// это пост в канале
bool isPost();

// это отредактированное сообщение или отредактированный пост
bool isEdited();
fb::MessageRead

// ================ INFO ================

// текст сообщения
Text text();

// подпись файла
Text caption();

// id сообщения в этом чате
Text id();

// id темы в группе
Text threadID();

// сообщение отправлено в топик форума
Text isTopic();

// дата отправки или пересылки сообщения
Text date();

// дата изменения сообщения
Text editDate();

// ================ SENDER ================

// отправитель сообщения
UserRead from();

// бот, через которого пришло это сообщение
UserRead viaBot();

// чат, которому принадлежит это сообщение
ChatRead chat();

// чат, если сообщение отправлено от имени чата
ChatRead senderChat();

// ================ REPLY ================

// сообщение является ответом на сообщение
bool isReply();

// сообщение, на которое отвечает это сообщение
MessageRead reply();

// ================ FORWARD ================

// сообщение переслано из другого чата
bool isForward();

// данные о пересланном сообщении
MessageOriginRead forward();

// ================ LOCATION ================

// сообщение содержит геолокацию
bool hasLocation();

// геолокация
LocationRead location();

// ================ DOCUMENT ================

// сообщение содержит документ
bool hasDocument();

// документ
DocumentRead document();
fb::MessageOriginRead

// fb::MessageOriginRead::Type
user
hiddenUser
chat
channel
// тип отправителя: user, hidden_user, chat, channel
Type type();

// дата оригинального сообщения
Text date();

// отправитель type == user
UserRead senderUser();

// отправитель type == chat
ChatRead senderChat();

// отправитель type == channel
ChatRead chat();
fb::Result

// наследует gson::Entry

// освободить память
void reset();

// получить ридер
StreamReader& getReader();

// получить скачанный json пакет как Text
Text getRaw();
fb::Fetcher

// напечатать в принт
template <typename T>
bool writeTo(T& p);

// обновить прошивку (ESP)
bool updateFlash();

// обновить файловую систему (ESP)
bool updateFS();

// есть данные для чтения
int available();

// есть данные для чтения
operator bool();

Stream* stream;
fb::ChatRead

// fb::ChatRead::Type
privateChat
group
supergroup
channel
// id чата
Text id();

// тип чата: private_chat, group, supergroup, channel
Type type();

// название чата (для supergroups, channels, group chats)
Text title();

// имя чата (для private chats, supergroups, channels)
Text username();

// имя (для private chat)
Text firstName();

// фамилия (для private chat)
Text lastName();

// описание чата
Text description();

// в supergroup включены темы
Text isForum();
fb::DocumentRead

// id документа, можно использовать для скачивания
Text id();

// уникальный id документа в системе
Text uniqueID();

// имя документа
Text name();

// MIME тип документа
Text type();

// размер документа
Text size();
fb::LocationRead

// широта
Text latitude();

// долгота
Text longitude();

// точность в метрах, 0-1500
Text horizontalAccuracy();

// Время относительно даты отправки сообщения в секундах, в течение которого местоположение может быть обновлено
Text livePeriod();

// направление в градусах, 1-360
Text heading();

// Максимальное расстояние в метрах для оповещений о приближении к другому участнику чата
Text proximityAlertRadius();
fb::UserRead

// id юзера
Text id();

// бот или нет
Text isBot();

// имя
Text firstName();

// фамилия
Text lastName();

// юзернейм
Text username();

// код страны https://en.wikipedia.org/wiki/IETF_language_tag
Text languageCode();

// true - премиум юзер
Text isPremium();
fb::QueryRead

// callback id
Text id();

// callback data
Text data();

// отправитель коллбэка
UserRead from();

// сообщение
MessageRead message();

Отправка #

fb::Message

// fb::Message::Mode
Text
MarkdownV2
HTML
Message();
Message(const String& text, Value chatID);

// для ручного добавления тех параметров, которых нет в классе!
gson::string json;

// текст сообщения
String text;

// id чата, куда отправлять
Value chatID;

// id темы в группе, куда отправлять
int32_t threadID = -1;

// параметры ответа на сообщение
ReplyParam reply;

// включить превью для ссылок
bool preview = previewDefault;

// уведомить о получении
bool notification = notificationDefault;

// защитить от пересылки и копирования
bool protect = protectDefault;

// режим текста: Text, MarkdownV2, HTML
Mode mode = modeDefault;

// добавить обычное меню
void setMenu(Menu& menu);

// добавить инлайн меню
void setInlineMenu(InlineMenu& menu);

// удалить обычное меню
void removeMenu();

// установить режим текста Markdown
void setModeMD();

// установить режим текста HTML
void setModeHTML();

// ===================================

// включить превью для ссылок (умолч. 1)
static bool previewDefault;

// уведомить о получении (умолч. 1)
static bool notificationDefault;

// защитить от пересылки и копирования (умолч. 0)
static bool protectDefault;

// режим текста: Text, MarkdownV2, HTML (умолч. Text)
static Mode modeDefault;
fb::ReplyParam

// id сообщения, на которое отвечаем
int32_t messageID = -1;

// id чата, в котором находится сообщение, на которое отвечаем
Value chatID;
fb::MessageForward

MessageForward();
MessageForward(uint32_t messageID, Value fromChatID, Value chatID);

// id пересылаемого сообщения в чате
uint32_t messageID;

// id чата пересылаемого сообщения
Value fromChatID;

// id чата, в который пересылать
Value chatID;

// id темы в группе, в которую переслать
int32_t threadID = -1;

// уведомить о получении
bool notification = Message::notificationDefault;

// защитить от пересылки и копирования
bool protect = Message::protectDefault;

// для ручного добавления тех параметров, которых нет в классе!
gson::string json;
fb::MyCommands

MyCommands();
MyCommands(const String& commands, const String& description);

// список команд, длина команды 1-32, разделитель ;
String commands = "";

// список описаний команд, длина описания 1-256, разделитель ;
String description = "";

// зарезервировать строки
void reserve(uint16_t len);

// добавить команду
void addCommand(const String& command, const String& description);
fb::File

// fb::File::type
photo
audio
document
video
animation
voice
video_note
// отправить fs::File файл
File(Text name, Type type, ::File& file);

// отправить данные из byte буфера
File(Text name, Type type, uint8_t* bytes, size_t length, bool progmem = false);

// отправить по ID файла в телеге или ссылкой (для document только GIF, PDF и ZIP)
// https://core.telegram.org/bots/api#sending-files
File(Text name, Type type, Text urlid);

using Message::chatID;
using Message::mode;
using Message::notification;
using Message::protect;
using Message::reply;
using Message::setInlineMenu;
using Message::threadID;
using Message::json;

// заголовок
String caption;
fb::Menu

Menu();
Menu(const String& text);

// надписи кнопок. Гор. разделитель - ;, верт. - \n (кнопка_1 ; кнопка_2 \n кнопка_3 ; кнопка_4)
String text = "";

// подсказка, показывается в поле ввода при открытой клавиатуре (до 64 символов)
String placeholder = "";

// принудительно показывать клавиатуру
bool persistent = persistentDefault;

// уменьшить клавиатуру под количество кнопок
bool resize = resizeDefault;

// автоматически скрывать после нажатия
bool oneTime = oneTimeDefault;

// показывать только упомянутым в сообщении юзерам
bool selective = selectiveDefault;

// добавить кнопку
Menu& addButton(Text text);

// перенести строку
Menu& newRow();

// ===================================

// принудительно показывать клавиатуру (умолч. 0)
static bool persistentDefault;

// уменьшить клавиатуру под количество кнопок (умолч. 0)
static bool resizeDefault;

// автоматически скрывать после нажатия (умолч. 0)
static bool oneTimeDefault;

// показывать только упомянутым в сообщении юзерам (умолч. 0)
static bool selectiveDefault;
fb::InlineMenu

InlineMenu();
InlineMenu(const String& text, const String& data);
InlineMenu(uint16_t reserve);

// надписи кнопок. Гор. разделитель - ;, верт. - \n (кнопка_1 ; кнопка_2 \n кнопка_3 ; кнопка_4)
String text = "";

// callback data кнопок с разделителем ; . Поддерживаются url адреса
String data = "";

// зарезервировать строки
void reserve(uint16_t len);

// добавить кнопку
InlineMenu& addButton(Text text, Text data = Text());

// перенести строку
InlineMenu& newRow();
fb::Location

Location();
Location(float latitude, float longitude, Value chatID);

using Message::chatID;
using Message::notification;
using Message::protect;
using Message::removeMenu;
using Message::reply;
using Message::setInlineMenu;
using Message::setMenu;
using Message::threadID;
using Message::json;

// широта
float latitude;

// долгота
float longitude;

// точность в метрах, 0-1500
float horizontalAccuracy = NAN;

// период обновления локации в секундах 60.. 86400
uint32_t livePeriod = 0;

// направление в градусах, 1-360
uint16_t heading = 0;

// Максимальное расстояние в метрах для оповещений о приближении к другому участнику чата
uint32_t proximityAlertRadius = 0;

Редактирование #

fb::FileEdit

FileEdit(Text name, Type type, File& file);
FileEdit(Text name, Type type, uint8_t* bytes, size_t length, bool progmem = false);

// document by url - GIF, PDF and ZIP
// https://core.telegram.org/bots/api#sending-files
FileEdit(Text name, Type type, Text urlid);

// id сообщения
uint32_t messageID;

using File::caption;
using File::chatID;
using File::multipart;
using Message::setInlineMenu;
using Message::json;
fb::TextEdit

TextEdit();
TextEdit(const String& text, uint32_t messageID, Value chatID);

// id сообщения
uint32_t messageID;

using Message::chatID;
using Message::mode;
using Message::preview;
using Message::setInlineMenu;
using Message::text;
using Message::json;
fb::MenuEdit

MenuEdit();
MenuEdit(uint32_t messageID, Value chatID);
MenuEdit(uint32_t messageID, Value chatID, InlineMenu& menu);

// id сообщения
uint32_t messageID;

using Message::chatID;
using Message::setInlineMenu;
using Message::json;
fb::CaptionEdit

CaptionEdit();
CaptionEdit(const String& caption, uint32_t messageID, Value chatID);

// заголовок
String caption;

// id сообщения
uint32_t messageID;

using Message::chatID;
using Message::mode;
using Message::setInlineMenu;
using Message::json;
fb::LocationEdit

LocationEdit();
LocationEdit(float latitude, float longitude, uint32_t messageID, Value chatID);

// широта
float latitude;

// долгота
float longitude;

// id сообщения
uint32_t messageID;

// точность в метрах, 0-1500
float horizontalAccuracy = NAN;

// направление в градусах, 1-360
uint16_t heading = 0;

// Максимальное расстояние в метрах для оповещений о приближении к другому участнику чата
uint32_t proximityAlertRadius = 0;

using Message::chatID;
using Message::setInlineMenu;
using Message::json;
fb::LocationStop

LocationStop();
LocationStop(uint32_t messageID, Value chatID);

// id сообщения
uint32_t messageID;

using Message::chatID;
using Message::setInlineMenu;
using Message::json;

Прочее #

fb::Poll

Sync   // синхронный (рекомендуемый период > 3500 мс)
Async  // асинхронный (рекомендуемый период > 3500 мс)
Long   // асинхронный long polling (рекомендуемый период > 20000 мс)
fb::Updates

// fb::Updates::Type
Message
EditedMessage
ChannelPost
EditedChannelPost
BusinessConnection
BusinessMessage
EditedBusinessMessage
DeletedBusinessMessages
MessageReaction
MessageReactionCount
InlineQuery
ChosenInlineResult
CallbackQuery
ShippingQuery
PreCheckoutQuery
Poll
PollAnswer
MyChatMember
ChatMember
ChatJoinRequest
ChatBoost
RemovedChatBoost
// установить
void set(uint32_t nmods);

// очистить
void clear(uint32_t nmods);

// включить все
void setAll();

// очистить все
void clearAll();

// прочитать по типу
bool read(Type m);

// прочитать по индексу
bool read(uint8_t idx);
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх