You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Поддержка Unicode (другие языки + эмодзи) для входящих сообщений
20
20
- Встроенный urlencode для исходящих сообщений
21
21
- Встроенные часы реального времени с синхронизацией от сервера Telegram
22
+
- Возможность OTA обновления прошивки файлом из чата Telegram
22
23
23
24
### Совместимость
24
25
ESP8266 (SDK v2.6+), ESP32
@@ -48,7 +49,21 @@ ESP8266 (SDK v2.6+), ESP32
48
49
-[Инициализация](#init)
49
50
-[Документация](#docs)
50
51
-[Использование](#usage)
51
-
-[Пример](#example)
52
+
-[ID чата/чатов](#chatid)
53
+
-[Парсинг сообщений](#inbox)
54
+
-[Тикер](#tick)
55
+
-[Минимальный пример](#example)
56
+
-[Обращение к сообщениям](#msgid)
57
+
-[Отправка стикеров](#sticker)
58
+
-[Меню](#menu)
59
+
-[Обычное меню](#basic)
60
+
-[Инлайн меню](#inline)
61
+
-[Инлайн меню с коллбэком](#callb)
62
+
-[Ответ на коллбэк](#answer)
63
+
-[Модуль времени](#unix)
64
+
-[Время получения сообщения](#time)
65
+
-[Часы реального времени](#rtc)
66
+
-[OTA обновление прошивки](#ota)
52
67
-[Версии](#versions)
53
68
-[Баги и обратная связь](#feedback)
54
69
@@ -67,9 +82,11 @@ ESP8266 (SDK v2.6+), ESP32
67
82
68
83
<aid="init"></a>
69
84
## Инициализация
85
+
-[Инструкция как создать и настроить Telegram бота](https://kit.alexgyver.ru/tutorials/telegram-basic/)
86
+
70
87
```cpp
71
88
FastBot bot;
72
-
FastBot bot(токен); // токен - уникальный код бота, берётся у BotFather
89
+
FastBot bot(токен); // с указанием токена
73
90
```
74
91
75
92
<a id="docs"></a>
@@ -235,7 +252,7 @@ String dateString(); // получить строку даты формата
235
252
// Многие функции возвращают статус:
236
253
// 0 - ожидание
237
254
// 1 - ОК
238
-
// 2 - Переполнен по ovf
255
+
// 2 - Переполнен
239
256
// 3 - Ошибка телеграм
240
257
// 4 - Ошибка подключения
241
258
// 5 - не задан chat ID
@@ -251,12 +268,15 @@ String dateString(); // получить строку даты формата
251
268
252
269
<aid="usage"></a>
253
270
## Использование
271
+
272
+
<aid="chatid"></a>
254
273
### ID чата/чатов
255
274
В библиотеке реализован необязательный "белый список" ID чатов, в которых работает бот. По умолчанию отключен.
256
275
- Устанавливается через `setChatID()`, куда можно передать одиночный ID или сразу несколько через запятую: `setChatID("id1,id2,id3")`
257
276
- Можно редактировать строку `chatIDs` напрямую как член класса
258
277
- Все функции отправки будут отправлять данные в заданный чат/чаты, если не указать его вручную в функции
259
278
279
+
<aid="inbox"></a>
260
280
### Парсинг сообщений
261
281
Сообщения автоматически читаются в `tick()`, при поступлении нового сообщения вызывается указанная функция-обработчик. Но тут есть варианты:
262
282
- Если задан ID чата/чатов (через `setChatID()`) - происходит автоматическое отсеивание сообщений НЕ из указанных чатов
@@ -272,11 +292,12 @@ String dateString(); // получить строку даты формата
272
292
-`String username` - имя пользователя (в API Telegram это first_name)
273
293
-`String chatID` - ID чата
274
294
-`int32_t messageID` - ID сообщения в чате
275
-
-`String text` - текст сообщения
295
+
-`String text` - текст сообщения или попдпись к файлу
276
296
-`String data` - callback дата сообщения (если есть)
277
297
-`bool query` - запрос
278
298
-`bool edited` - сообщение отредактировано
279
299
-`bool isBot` - сообщение от бота
300
+
-`bool OTA` - запрос на OTA обновление (получен .bin файл)
280
301
-`uint32_t unix` - время сообщения
281
302
282
303
С версии 2.11 добавлен метод `toString()`, позволяющий вывести строкой всё содержимое структуры
@@ -286,12 +307,14 @@ String dateString(); // получить строку даты формата
286
307
287
308
> Примечание: Телеграм разделяет текст на несколько сообщений, если длина текста превышает ~4000 символов! Эти сообщения будут иметь разный ID в чате.
288
309
310
+
<aid="tick"></a>
289
311
### Тикер
290
312
Для опроса входящих сообщений нужно подключить обработчик сообщений и вызывать `tick()` в главном цикле программы `loop()`, опрос происходит по встроенному таймеру.
291
313
По умолчанию период опроса установлен 3600 миллисекунд. Можно опрашивать чаще (сменить через `setPeriod()`), но Телеграм иногда тупит и
292
314
при частом опросе запрос может выполняться ~3 секунды вместо 60 миллисекунд! На это время программа "зависает" внутри `tick()`.
293
315
При периоде ~3600 мс этого не происходит, поэтому я сделал его по умолчанию.
294
316
317
+
<aid="example"></a>
295
318
### Минимальный пример
296
319
```cpp
297
320
voidsetup() {
@@ -314,6 +337,7 @@ void loop() {
314
337
}
315
338
```
316
339
340
+
<a id="msgid"></a>
317
341
### Обращение к сообщениям
318
342
Для редактирования и удаления сообщений и меню, а также закрепления сообщений, нужно знать ID сообщения.
319
343
- ID входящего сообщения приходит в обработчик входящих сообщений
@@ -322,10 +346,12 @@ void loop() {
322
346
323
347
Будьте внимательны с ID чата, у всех чатов своя нумерация ID сообщений!
324
348
349
+
<a id="sticker"></a>
325
350
### Отправка стикеров
326
351
Для отправки стикера нужно знать ID стикера. Отправь нужный стикер боту *@idstickerbot*, он пришлёт ID стикера.
327
352
Этот ID нужно передать в функцию `sendSticker()`.
328
353
354
+
<a id="menu"></a>
329
355
### Меню
330
356
> Примечание: для всех вариантов меню *не производится* url encode. Избегайте символов `#` и `&` или используйте уже закодированный url!
331
357
@@ -347,20 +373,23 @@ void loop() {
347
373
|_______________________|
348
374
```
349
375
376
+
<aid="basic"></a>
350
377
### Обычное меню
351
378
Большое меню в нижней части чата.
352
379
```cpp
353
380
showMenu("Menu1 \t Menu2 \t Menu3 \n Menu4");
354
381
```
355
382
Нажатие на кнопку отправляет текст с кнопки (поле сообщения `text`).
0 commit comments