Разбор кода в telebot не помог
дошел до кода и тупик :
class HandlerBackend(object):
"""
Class for saving (next step|reply) handlers.
:meta private:
"""
def __init__(self, handlers=None):
if handlers is None:
handlers = {}
self.handlers = handlers
def register_handler(self, handler_group_id, handler):
raise NotImplementedError()
def clear_handlers(self, handler_group_id):
raise NotImplementedError()
def get_handlers(self, handler_group_id):
raise NotImplementedError()
В итоге вопрос удалось решить.
Может кому-то будет полезно
-- Структура таблицы в БД mysql
CREATE TABLE handlers (
chat_id int(11) NOT NULL,
callback_func varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (chat_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/* Код */
$chat_id = 10; /* условный id чата */
function addHandler($chat_id, $callback){
$db->query("INSERT INTO handlers (chat_id, callback_func) VALUE ('$chat_id', '$callback') ON DUPLICATE KEY UPDATE handlers.callback_func = '$callback'");
return $db->get_affected_rows();
}
function removeHandler($chat_id){
$db->query("DELETE FROM handlers WHERE chat_id = '$chat_id'");
return $db->get_affected_rows();
}
function getHandler($chat_id){
$row = $db->query_ex("SELECT callback_func FROM handlers WHERE chat_id = '$chat_id'");
return ($row)? $row['callback_func']: null;
}
function executeHandler($callback, $params = null){
/*
Используем
call_user_func или call_user_func_array
*/
if (function_exists($callback))
return call_user_func($callback, $params);
return false;
}
/* Использование */
$bot->sendMessage($chat_id, "Введите дату в формате: 01.03.2023");
/* Инициируем обработчик для получения ввода данных */
addHandler($chat_id, 'getReport');
/* В начале модуля проверяем наличие обработчика */
if ($callback_func = getHandler($chat_id)) {
executeHandler($callback_func, $bot->getText());
}
function getReport($date){
/* Наш код */
/* Удаляем обработчик */
removeHandler($chat_id);
}