Задать вопрос
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    shurshur, что имеется в виду под "сброситься до изначального состояния"? Разве это не clear после handle_number_input?

    UPD: В админке всего две кнопки adm_btn1 и adm_btn2. Соответсвенно я и поделил функции таким же методом. А все текста я вывел в отдельный файл. Потому что этот бот, вероятно, может уйти в пользование человека далёкого от программирования. И если изменится название услуг или будет нужна коррекция названия кнопок - он сможет открыть один файл и поменять всё что ему нужно.
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    shurshur, я и в следующей функции пробовал, и непосредственно пере вызовом самого register_next_step_handler.

    Тут проблема кажется даже не в хандлере а в том, что функция вызывается АДД, а не Делете, хотя прописана как АДД.

    Потому как далее идёт всё по коду АДД. Ну при условии если адд выбирался первым
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    shurshur, ну вот если сразу после register_next_step_handler вписать clear_step_handler - то он сразу откидывается даже не получив ответа от пользователя.

    А если clear_step_handler выполнить после def handle_number_input то он как бы выполняется, но при попытке вызвать def handle_number_input2 вызыается опять def handle_number_input
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    Методом проб и ошибок, понял, что после добавления юзера, когда хочу далить следующего то на моменте когда выбрал таблицу и тебя перекидывает в следующую функцию вот таким методом:
    handle_table_selection2(bot, message, table_name)
    На самом деле отправляет в handle_table_selection(bot, message, table_name) (без двойки, т.е. в функцию добавления юзера, а не удаления)

    В обратном порядке так же работает - если сначала удаляешь, потом заходишь добавить, то пересылает уже в функцию с двойкой, т.е. удаления
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    Кучу чего перепробовал, самое оригинальное было останавливать хандер, а потом вызывать некст степ, что прям точно должно было сработать - но нет. Всё равно вызывается тот первый хандлер :(
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    Хотя знаешь, подход гениальный. Типа если хандлер останется ниже по коду, то он типа не активируется чтоли? Хз, протестил - перевернул код. Допёр что нужно import userAdd и userDelete сделать, а не только from userAdd и userDelete, в целом всё работает. Но проблема так и осталась.
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    То есть вы сначала выполняете запрос к БД, а потом только просите ввести номер телефона который в эту БД нужно отправить? А лично вы не chatGPT?)

    Да и при попытке добавить userDelete. или userAdd. - не находит для этого определения

    UPD: Ааа, Вы код вверх ногами исполнили, тогда конечно виноват, зря быканул
  • Как правильно импортировать набор функций и хандлеров?

    @xx_RuBiCoN_xx Автор вопроса
    Ivan Kudinov, проверил ещё раз - без if заработало нормально. Видимо там вчера чёт накрутил лишнего с усталости.
  • Как остановить handler?

    @xx_RuBiCoN_xx Автор вопроса
    shurshur, выбивает ошибку:
    AttributeError: 'TeleBot' object has no attribute 'cancel_step_handler'. Did you mean: 'clear_step_handler'?


    Попробовал и bot.clear_step_handler(message) и bot.clear_step_handler_by_chat_id(message.chat.id) - тогда ошибок нет, но хандлер всё равно активен прошлый.

    UPD:
    Если это вставить сразу после хандлера - то он останавливается сразу ещё не выполнившись. А если в следующей функции - то он уже не останавливается
  • Как правильно импортировать набор функций и хандлеров?

    @xx_RuBiCoN_xx Автор вопроса
    Ivan Kudinov, каждая calldata содержит в себе название таблицы, к которой потом будет делаться запрос. То есть table_name должен быть приравнен именно к той calldata на которую тыкнул пользователь. Не уверен, что это осуществимо, если их все запхнуть в allow.

    P.S. Да и эта часть кода работает. Пункт выбирается, следующая функция включается. Тут проблема походу где то в этом районе:
    bot.register_next_step_handler(message, lambda msg: handle_number_input(msg, table_name))
  • Как правильно импортировать набор функций и хандлеров?

    @xx_RuBiCoN_xx Автор вопроса
    Алан Гибизов, ну откинь мысленно все elif кроме первого - и вот тебе минимальный код. Не знаешь чем помочь - не засоряй комментарии.
  • Как правильно импортировать набор функций и хандлеров?

    @xx_RuBiCoN_xx Автор вопроса
    Алан Гибизов, читаем внимательно суть вопроса:
    Почему то не срабатывает последняя функция def handle_number_input(message, table_name).


    P.S. Не срабатывает = не вызывается
  • Как правильно импортировать набор функций и хандлеров?

    @xx_RuBiCoN_xx Автор вопроса
    Алан Гибизов, ну если бы была проблема с базой данных - бот бы выдал ошибку по ней. А тут просто тишина - нет реакции на отправленый номер телефона.

    P.S. Вы про "text42"? А как мне ещё вывести все используемые названия и тексты в один файл для более лёгкого редактирования? Изменится название базы или тарифа - зашёл в 1 файл, изменил 1 название и всё. А не бегаешь по всему коду в поиске нужных слов.
  • Чат поддержки пересылает только 1 сообщение юзера. Как продолжить?

    @xx_RuBiCoN_xx Автор вопроса
    Ну в Вашем варианте бот запоминает, всё что я вводил и потом присылает одним сообщением в конце весь текст. А мне ведь нужно пересылать сообщения в другой чат...

    =============
    UPD:
    Ааа, ну если Вы намекали на возврат на прошлую функцию методом start(message) - то да, идея хорошая.