GyverLibs / FastBot

Многофункциональная быстрая библиотека для Телеграм бота на esp8266/esp32
MIT License
186 stars 31 forks source link

Изменение логики парсинга входящих сообщений #2

Closed szabota closed 3 years ago

szabota commented 3 years ago

"...Если задан ID чата/чатов (через setChatID()) - происходит автоматическое отсеивание сообщений НЕ из указанных чатов..." Оох! Это есть очень-очень сильное ограничение функционала бота. На мой взгляд, нужно всегда принимать все сообщения, а обрабатывать их или нет, уже решать в самом парсере. А для этого соответственно нужна отдельная функция, которая сверит данный ChatID со списком уже имеющихся в переменной ChatIDs. И тогда бот будет уже самостоятельно принимать решение, как ему поступать с пришедшим сообщением. Например, если и правда нужно отсеивать сообщения НЕ из указанных чатов, то это будет запрограммировано как-то примерно так: if ( !inChatIDs(ID) ) return;

GyverLibs commented 3 years ago

В актуальной версии можно не задавать chatID, бот принимает все сообщения и отправляет текст, ID сообщения, ID чата и юзернейм. См. доку и примеры

szabota commented 3 years ago

Дык в том-то и вопрос, что мне нужно и чат ид задавать, и принимать сообщения ещё и из неизвестных чатов.

GyverLibs commented 3 years ago

заведи строку-вайтлист chatID, и в парсере отсеивай через .indexOf

szabota commented 3 years ago

К примеру, я хочу спрашивать пароль к управлению устройством из чат-бота. Если пароль совпал, я запоминаю это чат-ид и разрешаю управление. При этом если другой пользователь пришлёт сообщение, бот у него тоже должен спросить пароль и запомнить новый чат-ид

GyverLibs commented 3 years ago

библиотека ничем в этом случае не ограничивает: не задавай внутренний ID список и будешь получать все сообщения и уже сравнивать со своим вайтлистом в любом удобном формате. Внутренний setChatID нужен для конкретного ограничения нужных чатов

szabota commented 3 years ago

Ладно, тоже вариант. Спасибо.

GyverLibs commented 3 years ago

не, я могу конечно обернуть foo.indexOf(ID) > -1 в inChatIDs(ID), но это уже будет несовместимо с текущей версией, когда установленный ID отсеивает чаты

szabota commented 3 years ago

Согласен, внедрять хотелки так, чтобы не разрушить совместимость, это не благодарный труд. Библиотека получилась супер, спасибо огромное!

GyverLibs commented 3 years ago

да незшт, делал под одну задачу, но коллективными хотелками получили отличный аналог тяжеленной telegramBot