Skip to content

Commit d769c24

Browse files
committed
upd
1 parent dadf9aa commit d769c24

File tree

13 files changed

+420
-330
lines changed

13 files changed

+420
-330
lines changed

README.md

Lines changed: 57 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
[![Foo](https://img.shields.io/badge/Version-2.0-brightgreen.svg?style=flat-square)](#versions)
1+
[![Foo](https://img.shields.io/badge/Version-2.1-brightgreen.svg?style=flat-square)](#versions)
22
[![Foo](https://img.shields.io/badge/Website-AlexGyver.ru-blue.svg?style=flat-square)](https://alexgyver.ru/)
33
[![Foo](https://img.shields.io/badge/%E2%82%BD$%E2%82%AC%20%D0%9D%D0%B0%20%D0%BF%D0%B8%D0%B2%D0%BE-%D1%81%20%D1%80%D1%8B%D0%B1%D0%BA%D0%BE%D0%B9-orange.svg?style=flat-square)](https://alexgyver.ru/support_alex/)
44

55
# FastBot
6-
Очень простая и быстрая библиотека для телеграм бота
7-
- Оптимизирована для большой нагрузки (спокойно принимает 50 сообщ в секунду)
6+
Очень простая и быстрая библиотека для телеграм бота на esp8266/esp32
7+
- Работает на стандартных библиотеках
8+
- Работает без SSL
9+
- Оптимизирована для большой нагрузки
810
- Опциональная установка ID чата для общения с ботом
911
- Проверка обновлений вручную или по таймеру
10-
- Сообщения приходят в функцию-обработчик
11-
- Отправка сообщений в чат
12+
- Отправка/редактирование/ответ на сообщения
1213
- Вывод меню вместо клавиатуры
1314
- Вывод инлайн меню в сообщении
14-
- Возможность включить ручной инкремент новых сообщений
15-
- Работает без SSL
1615
- Поддержка Unicode (другие языки + эмодзи)
17-
- Работает на стандартных библиотеках
1816

1917
### Совместимость
2018
ESP8266, ESP32
@@ -59,17 +57,17 @@ FastBot bot(токен, лимит, порог, период);
5957
## Документация
6058
```cpp
6159
// ============== НАСТРОЙКИ ==============
62-
void setLimit(int limit); // макс кол-во сообщений на запрос
63-
void setOvf(int ovf); // макс кол-во символов
64-
void setPeriod(int period); // период опроса в мс (по умолч. 1000)
6560
void setToken(String token); // изменить/задать токен бота
61+
void setChatID(String chatID); // установка ID чата. Можно несколько через запятую ("id1,id2,id3")
62+
void setPeriod(int period); // период опроса в мс (по умолч. 1000)
63+
void setLimit(int limit); // макс кол-во сообщений на запрос
64+
void setOvf(int ovf); // макс кол-во символов на запрос (защита от флуда)
6665
void setBufferSizes(uint16_t rx, uint16_t tx); // установить размеры буфера на приём и отправку, по умолч. 512 и 512 байт (только для esp8266)
67-
void setChatID(String chatID); // установка ID чата для парсинга сообщений. Можно несколько через запятую ("id1,id2,id3")
68-
66+
6967
7068
// =============== ПАРСИНГ ===============
71-
void attach(void (*handler)(String&, String&)); // подключение обработчика сообщений
7269
void attach(void (*FB_msg)(msg&)); // подключение обработчика сообщений
70+
void attach(void (*handler)(String&, String&)); // подключение обработчика сообщений (устаревший)
7371
void detach(); // отключение ВСЕХ ОБРАБОТЧИКОВ СООБЩЕНИЙ
7472
7573
@@ -79,87 +77,78 @@ uint8_t tick(); // проверка обновл
7977
8078
8179
// ============== СООБЩЕНИЯ ===============
80+
uint8_t sendMessage(String msg); // отправить сообщение в указанный в setChatID чат/чаты
81+
uint8_t sendMessage(String msg, String id); // отправить сообщение в указанный здесь чат/чаты
82+
83+
// ответить на сообщение с id (replyID) в указанный в setChatID чат ИЛИ указать чат
84+
uint8_t replyMessage(String msg, int32_t replyID);
85+
uint8_t replyMessage(String msg, int32_t replyID, String id);
86+
87+
void answer(String text, bool alert = false); // ответить на callback текстом (text) и режимом (alert) (true - предупреждение)
88+
void setTextMode(uint8_t mode); // режим обработки текста: FB_TEXT, FB_MARKDOWN, FB_HTML
89+
8290
int32_t lastBotMsg(); // ID последнего отправленного ботом сообщения
8391
int32_t lastUsrMsg(); // ID последнего отправленного юзером сообщения
84-
uint8_t sendMessage(String msg); // отправить сообщение в указанный в setChatID чат/чаты
85-
uint8_t sendMessage(String msg, String id); // отправить сообщение в указанный здесь чат/чаты (через запятую)
86-
void answer(String text, bool alert = false); // ответить на callback текстом и true - предупреждением
87-
88-
92+
8993
// ============== УДАЛИТЬ ===============
90-
uint8_t deleteMessage(int offset); // удалить сообщение со смещением offset в указанном в setChatID чате
91-
uint8_t deleteMessage(int offset, String id); // удалить сообщение со смещением offset в указанном здесь чате
92-
uint8_t deleteMessageID(int32_t msgid); // удалить сообщение id в указанном в setChatID чате
93-
uint8_t deleteMessageID(int32_t msgid, String id); // удалить сообщение id в указанном чате
94+
uint8_t deleteMessage(int32_t offset); // удалить сообщение со смещением (offset) в указанном в setChatID чате
95+
uint8_t deleteMessage(int32_t offset, String id); // удалить сообщение со смещением (offset) в указанном здесь чате
96+
uint8_t deleteMessageID(int32_t msgid); // удалить сообщение (msgid) в указанном в setChatID чате
97+
uint8_t deleteMessageID(int32_t msgid, String id); // удалить сообщение (msgid) в указанном чате
9498
9599
96100
// ============ РЕДАКТИРОВАТЬ =============
97-
// редактировать сообщение со смещением offset в указанном в setChatID чате
101+
// редактировать сообщение со смещением (offset) в указанном в setChatID чате
98102
uint8_t editMessage(int32_t offset, String text);
99103
100-
// редактировать сообщение со смещением offset в указанном чате
101-
uint8_t editMessage(int32_t offset, String text, String id);
102-
uint8_t editMessage(int32_t offset, String text, int32_t id);
103-
104-
// редактировать сообщение id в указанном в setChatID чате
104+
// редактировать сообщение (msgid) в указанном в setChatID чате ИЛИ передать id чата
105105
uint8_t editMessageID(int32_t msgid, String text);
106-
107-
// редактировать сообщение id в указанном чате
108106
uint8_t editMessageID(int32_t msgid, String text, String id);
109-
uint8_t editMessageID(int32_t msgid, String text, int32_t id);
110107
111108
112109
// ============= ОБЫЧНОЕ МЕНЮ =============
113-
uint8_t showMenu(String str); // показать меню (str) в указанном в setChatID чате
114-
uint8_t showMenu(String str, String id); // показать меню в указанном здесь чате/чатах (через запятую)
115-
uint8_t closeMenu(); // скрыть меню в указанном в setChatID чате
116-
uint8_t closeMenu(String id); // скрыть меню в указанном здесь чате/чатах (через запятую)
110+
// показать меню (menu) в указанном в setChatID чате/чатах ИЛИ передать id чата/чатов
111+
uint8_t showMenu(String menu);
112+
uint8_t showMenu(String menu, String id);
117113
114+
// скрыть меню в указанном в setChatID чате/чатах ИЛИ передать id чата/чатов
115+
uint8_t closeMenu();
116+
uint8_t closeMenu(String id);
118117
119-
// ======== ОБЫЧНОЕ МЕНЮ С ТЕКСТОМ =========
120-
// показать меню (str) в указанном в setChatID чате + сообщение (msg)
121-
uint8_t showMenuText(String msg, String str);
122118
123-
// показать меню (str) в указанном здесь чате/чатах (через запятую) + сообщение (msg)
124-
uint8_t showMenuText(String msg, String str, String id);
119+
// ======== ОБЫЧНОЕ МЕНЮ С ТЕКСТОМ =========
120+
// сообщение (msg) + показать меню (menu) в указанном в setChatID чате/чатах ИЛИ передать id чата/чатов
121+
uint8_t showMenuText(String msg, String menu);
122+
uint8_t showMenuText(String msg, String menu, String id);
125123
126-
// скрыть меню в указанном в setChatID чате + сообщение (msg)
124+
// сообщение (msg) + скрыть меню в указанном в setChatID чате/чатах ИЛИ передать id чата/чатов
127125
uint8_t closeMenuText(String msg);
128-
129-
// скрыть меню в указанном здесь чате/чатах (через запятую) + сообщение (msg)
130126
uint8_t closeMenuText(String msg, String id);
131127
132128
133129
// ============= ИНЛАЙН МЕНЮ =============
134-
// показать инлайн меню (str) в указанном в setChatID чате + сообщение (msg)
135-
uint8_t inlineMenu(String msg, String str);
136-
137-
// показать инлайн меню (str) в указанном здесь чате/чатах (через запятую) + сообщение (msg)
138-
uint8_t inlineMenu(String msg, String str, String id);
130+
// сообщение (msg) с инлайн меню (menu) в указанном в setChatID чате/чатах ИЛИ передать id чата/чатов
131+
uint8_t inlineMenu(String msg, String menu);
132+
uint8_t inlineMenu(String msg, String menu, String id);
139133
140134
141135
// ======= ИНЛАЙН МЕНЮ С КОЛЛБЭКОМ =======
142-
// показать инлайн меню (str) с коллбэком (cbck) в указанном в setChatID чате + сообщение (msg)
143-
uint8_t inlineMenuCallback(String msg, String str, String cbck);
144-
145-
// показать инлайн меню (str) с коллбэком (cbck) в указанном здесь чате/чатах (через запятую) + сообщение (msg)
146-
uint8_t inlineMenuCallback(String msg, String str, String cbck, String id);
136+
// сообщение (msg) с инлайн меню (menu) и коллбэком (cbck) в указанном в setChatID чате/чатах ИЛИ передать id чата/чатов
137+
uint8_t inlineMenuCallback(String msg, String menu, String cbck);
138+
uint8_t inlineMenuCallback(String msg, String menu, String cbck, String id);
147139
148140
149141
// ======= РЕДАКТИРОВАТЬ ИНЛАЙН МЕНЮ С КОЛЛБЭКОМ =======
150-
// редактировать меню id в указанном в setChatID чате
151-
uint8_t editMenuID(int32_t msgid, String text, String cback);
152-
153-
// редактировать меню id в указанном чате
154-
uint8_t editMenuID(int32_t msgid, String text, String cback, String id);
155-
uint8_t editMenuID(int32_t msgid, String text, String cback, int32_t id);
142+
// редактировать меню (msgid) текстом (menu) в указанном в setChatID чате ИЛИ передать id чата
143+
uint8_t editMenuID(int32_t msgid, String menu, String cback);
144+
uint8_t editMenuID(int32_t msgid, String menu, String cback, String id);
156145
157146
158147
// ================ СЕРВИС ===============
148+
uint8_t sendRequest(String& req); // отправить запрос (начиная с /, например /sendMessage?...)
159149
void autoIncrement(boolean incr); // авто инкремент сообщений (по умолч включен)
160150
void incrementID(uint8_t val); // вручную инкрементировать ID на val
161151
String chatIDs; // указанная в setChatID строка, для отладки и редактирования списка
162-
uint8_t sendRequest(String& req); // отправить запрос
163152
164153
165154
// =============== СТАТУС ================
@@ -193,10 +182,10 @@ uint8_t sendRequest(String& req); // отправить запро
193182
- Эта функция будет автоматически вызвана при входящем сообщении, если ID чата совпадают или не настроены
194183
- Внутри этой функции можно пользоваться переданной переменной `сообщение`, которая имеет тип `FB_msg` (структура) и содержит в себе:
195184
- `int32_t ID` - ID сообщения
196-
- `int32_t usrID` - ID юзера
185+
- `String usrID` - ID юзера
197186
- `String first_name` - имя юзера
198187
- `String username` - ник юзера
199-
- `int32_t chatID` - ID чата
188+
- `String chatID` - ID чата
200189
- `String text` - текст сообщения
201190
- `bool query` - флаг запроса
202191

@@ -309,6 +298,11 @@ void newMsg(FB_msg& msg) {
309298
- Добавил ID юзера
310299
- Добавил редактирование сообщений и кучу всего
311300

301+
- v2.1:
302+
- Ещё оптимизация
303+
- Добавил форматирование текста (markdown, html)
304+
- Добавил ответ на сообщение
305+
312306
<a id="feedback"></a>
313307
## Баги и обратная связь
314308
При нахождении багов создавайте **Issue**, а лучше сразу пишите на почту [[email protected]](mailto:[email protected])

examples/demo/demo.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#define WIFI_SSID "login"
88
#define WIFI_PASS "pass"
99
#define BOT_TOKEN "2654326546:asjhAsfAsfkllgUsaOuiz_axfkj_AsfkjhB"
10-
#define CHAT_ID "574578754"
10+
#define CHAT_ID "123456789"
1111

1212
#include <FastBot.h>
1313
FastBot bot(BOT_TOKEN);

examples/echoBot/echoBot.ino

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
// бот отправляет обратно сообщения из чата (эхо-бот)
1+
// бот отправляет обратно сообщения из любого чата (эхо-бот)
22

33
#define WIFI_SSID "login"
44
#define WIFI_PASS "pass"
55
#define BOT_TOKEN "2654326546:asjhAsfAsfkllgUsaOuiz_axfkj_AsfkjhB"
6-
#define CHAT_ID "574578754"
76

87
#include <FastBot.h>
9-
FastBot bot;
8+
FastBot bot(BOT_TOKEN);
109

1110
void setup() {
1211
connectWiFi();
1312

14-
bot.setToken(BOT_TOKEN);
1513
bot.attach(newMsg);
1614
}
1715

@@ -23,7 +21,7 @@ void newMsg(FB_msg& msg) {
2321
Serial.print(msg.username); // логин
2422
Serial.print(", ");
2523
Serial.println(msg.text); // текст
26-
24+
2725
// отправить сообщение обратно
2826
bot.sendMessage(msg.text, msg.chatID);
2927
}

examples/editBot/editBot.ino

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,28 @@
22
#define WIFI_SSID "login"
33
#define WIFI_PASS "pass"
44
#define BOT_TOKEN "2654326546:asjhAsfAsfkllgUsaOuiz_axfkj_AsfkjhB"
5-
#define CHAT_ID "574578754"
5+
#define CHAT_ID "123456789"
66

77
#include <FastBot.h>
8-
FastBot bot;
8+
FastBot bot(BOT_TOKEN);
99

1010
void setup() {
1111
connectWiFi();
1212

13-
bot.setToken(BOT_TOKEN);
1413
bot.attach(newMsg);
1514
bot.setChatID(CHAT_ID);
1615
bot.sendMessage("Edit me!");
1716
}
1817

1918
void newMsg(FB_msg& msg) {
20-
// выводим ID чата, имя юзера и текст сообщения
2119
Serial.print(msg.chatID); // ID чата
2220
Serial.print(", ");
2321
Serial.print(msg.username); // логин
2422
Serial.print(", ");
2523
Serial.println(msg.text); // текст
26-
27-
bot.editMessageID(bot.lastBotMsg(), msg.text, msg.chatID);
24+
25+
// редактируем последнее сообщение от бота
26+
bot.editMessageID(bot.lastBotMsg(), msg.text);
2827
}
2928

3029
void loop() {

examples/menuTest/menuTest.ino

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,49 +4,52 @@
44
#define WIFI_SSID "login"
55
#define WIFI_PASS "pass"
66
#define BOT_TOKEN "2654326546:asjhAsfAsfkllgUsaOuiz_axfkj_AsfkjhB"
7-
#define CHAT_ID "574578754"
7+
#define CHAT_ID "123456789"
88

99
#include <FastBot.h>
1010
FastBot bot(BOT_TOKEN);
1111

12-
String menu1 = "Menu 1 \t Menu 2 \t Menu 3 \n Back";
13-
String menu2 = "Answer 1.1 \t Answer 1.2 \t Answer 1.3 \n Back";
14-
String menu3 = "Answer 2.1 \t Answer 2.2 \t Answer 2.3 \n Back";
15-
String menu4 = "Answer 3.1 \t Answer 3.2 \t Answer 3.3 \n Back";
16-
byte depth = 0;
17-
1812
void setup() {
1913
connectWiFi();
20-
21-
bot.setChatID(CHAT_ID); // передай "" (пустую строку) чтобы отключить проверку
22-
bot.attach(newMsg); // подключаем функцию-обработчик
14+
15+
bot.setChatID(CHAT_ID);
16+
bot.attach(newMsg);
17+
String menu1 = F("Menu 1 \t Menu 2 \t Menu 3 \n Back");
2318
bot.inlineMenu("Menu 0", menu1);
2419
}
2520

26-
// создать свою функцию вида имя(String& ник, String& сообщение)
27-
void newMsg(String& name, String& msg) {
28-
Serial.println(msg);
21+
byte depth = 0;
22+
void newMsg(FB_msg& msg) {
23+
String menu1 = F("Menu 1 \t Menu 2 \t Menu 3 \n Back");
24+
String menu2 = F("Answer 1.1 \t Answer 1.2 \t Answer 1.3 \n Back");
25+
String menu3 = F("Answer 2.1 \t Answer 2.2 \t Answer 2.3 \n Back");
26+
String menu4 = F("Answer 3.1 \t Answer 3.2 \t Answer 3.3 \n Back");
27+
28+
// удаляем последнее сообщение от бота
2929
bot.deleteMessage(0);
30-
if (msg == "Menu 1") {
30+
31+
if (msg.text == "Menu 1") {
3132
bot.inlineMenu("Menu 1", menu2);
3233
depth = 1;
3334
}
34-
if (msg == "Menu 2") {
35+
if (msg.text == "Menu 2") {
3536
bot.inlineMenu("Menu 2", menu3);
3637
depth = 1;
3738
}
38-
if (msg == "Menu 3") {
39+
if (msg.text == "Menu 3") {
3940
bot.inlineMenu("Menu 3", menu4);
4041
depth = 1;
4142
}
42-
if (msg == "Back" && depth == 1) {
43+
if (msg.text == "Back" && depth == 1) {
4344
bot.inlineMenu("Menu 0", menu1);
4445
depth = 0;
4546
}
4647

47-
if (msg == "Show menu") {
48+
if (msg.text == "Show menu") {
4849
bot.inlineMenu("Menu 0", menu1);
4950
}
51+
52+
Serial.println(msg.text);
5053
}
5154

5255
void loop() {

0 commit comments

Comments
 (0)