• Как сделать проверку написал ли что-то человек в бота, либо нажал на кнопку?

    SoreMix
    @SoreMix
    yellow
    1. Отказываемся от глобальных переменных в любом виде.
    2. Разделяем декораторы для того чтобы понимать что происходит в коде
    3. Используем register_next_step_handler, который для этого и создан.

    Я тут начал писать решение, но удалил, подумав, а зачем так запутанно?

    # Я бы закинул все обработчики кнопок в свои хэндлеры (с call аналогичено)
    
    @bot.message_handler(func=lambda m: m.text and m.text == 'Zeptat se✏️')
    def handle_user_question(message):
        bot.send_message(message.chat.id, 'Напишите сюда Ваш вопрос. Менеджер свяжется с Вами.')
        bot.send_message(manager, 'С вами свяжется пользователь URL')
        bot.register_next_step_handler(message, proccess_user_question)
    
    def proccess_user_question(message):
        # здесь проверяем что пришло, реальный вопрос или нажали кнопку
        if message.text and message.text in ['Zeptat se✏️', 'Více s soukromé komunitě', 'Platba ']:
            # просто вызываем нужную функцию, которые описали выше, как пример:
            if message.text == 'Zeptat se✏️':
                return handle_user_question(message)
    
        # а дальше уже если все проверки на клаву пришли, то обрабатываем как реальный вопрос
        bot.send_message(manager, 'Вопрос от URL:')
        bot.forward_message(manager, message.chat.id, message.message_id)
        bot.send_message(message.chat.id, 'Ваш вопрос отправлен')


    ИМХО лишние здесь всякие вот эти инлайн кнопки которые не несут функционал, только путают. Вот и всё стихотворенье
    Ответ написан
    1 комментарий
  • Как правильно обработать # IndexError: string index out of range?

    Vindicar
    @Vindicar
    RTFM!
    Не перебирать в цикле строку до конца, а только до предпоследнего символа. Его обработать отдельно, если потребуется.
    А вообще, я бы переписал по другому. Просто храни в переменной последний увиденный символ.
    Тогда, пока ты идёшь по строке, у тебя есть два варианта:
    а) текущий символ совпал с последним увиденным. нарасти счётчик повторов на 1.
    б) текущий символ отличается. запиши счётчик в выходную строку, сбрось счётчик в 1, запомни текущий символ как последний.
    Ответ написан
    Комментировать
  • Как сделать выполнение команды только один раз?

    @SunTechnik
    Запоминать в базе когда клиент делал последний раз запрос на команду. Если время еще не истекло - команду игнорировать...
    Ответ написан
    Комментировать
  • Как и где учить математику, если вкатываешься в нейросети?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотри если речь о нейронных сетях именно то как таковой сложной математики там нет. Что такое нейронная сеть это последовательность слоев. Каждый слой представляет из себя нелинейную геометрическую трансформацию в многомерном пространстве. Для лучшего понимания и изучения можешь взять двумерные данные. Взять четыре точки квадрат с координатами. У тебя получится матрица A размерность (4, 2). Так что происхдит в скрытом слое.

    relu(dot(A, W) + b) - все как бы это не звучало но это ровно то что происходит внутри скрытого слоя. Мы инициализируем случайную матрицу весов размерностью которая подходит для математического умножения матриц. При математическом умножении матриц порядок важен и правило следующее количество колонок в первой матрице должно совпадать с количество рядов во второй матрице. Если матрица A у нас (4,2), то матрица весов у нас должна быть (2, любое значение) пусть будет 16 например. И результатом будет матрица (4, 16)
    Например
    A = np.array([[0,0],
                  [0,2],
                  [2,2],
                  [2,0]])
    W = np.random.uniform(-1,1,size=(2,16)
    result = np.dot(A,W)
    Здесь мы осуществили геометрическую трансформацию, мы получили представление данных в 16 мерном пространстве. Далее мы просто прибавляем также случайно инициализированный вектор b в подходящей размерности и все. Все эти трансформации линейны. Не линейность достигается функцией активации например relu то есть весь наш код будет
    import numpy as np
    
    A = np.array([[0,0],
                  [0,2],
                  [2,2],
                  [2,0]])
    W = np.random.uniform(-1,1,size=(2,16))
    b = np.zeros(16)
    result = np.dot(A,W) + b
    np.maximum(result,0)
    Все теперь у нас не линейная геометрическая трансформация. Затем посредством обратного распространения ошибки будет находится полезные геометрические трансформации, и будет происходит настройка значений (параметров модели) в наших матрицах весов (которые минимизируют loss функцию), то есть обучение модели. Это то что происходит в одном слое, последний слой там не много по другому, в зависимости от задачи и размерности которую мы хотим получить.
    Что выучить. Линейная алгебра Khan Academy. Обратное распространение ошибки осуществляется за счет подсчета градиента. Лучше начать с Single Variable Calculus курсы Calculus AP и ВС там же Khan Academy, и затем Multivariable Calculus Khan Academy. Все для нейронных сетей этого хватит, статистика как таковая для нейронных сетей на прямую не требуется, скорее для общего понимания и косвенно там выборку осуществить. Эти курсы шикарные и их достаточно для нейронных сетей. Для других алгоритмов их будет не достаточно. Ну и надо иметь ввиду, что у нас не обязательно математическое умножение тенсоров второго порядка (матриц), у нас могут быть конволюции. Пример что я привел это самый распространенный случай. Так что основы линейной алгебры, дифференцирование функции одной переменной затем многих (именно они и нужны), не пытайся сразу в дифференцирование функции многих переменных иначе не будешь понимать что к чему.
    Ответ написан
    Комментировать
  • Как создать подобную функцию в JavaScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Вот так: JavaScript -> Reference -> Classes

    Либо просто добавить нужную функцию к объекту:
    let o = {
        foo: function() { console.log('foo called') }
    }

    >> o.foo()
    <- foo called
    Ответ написан
    Комментировать
  • Почему бот отправляет &amp;amp;quot;0&amp;amp;quot;?

    Vindicar
    @Vindicar
    RTFM!
    Документацию читать надо.
    os.system() возвращает числовой код завершения запущенного процесса (0 - завершилась успешно). Стандартный вывод этого процесса молча отправляется в стандартный вывод твоей консоли.
    Если тебе нужен перехватить стандартный вывод, используй средства модуля subprocess.
    А если тебе нужно мониторить изменения файла, используй пакет watchdog.
    Ответ написан
    4 комментария
  • Почему не отсеиваются нули при сравнении 0 < 0?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    array[index + 1] ? item < array[index + 1] : true Что эта конструкция делает, можете объяснить? Ошибка в ней.
    Ответ написан
    5 комментариев
  • Что означает запись?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В контроллере COM-порта несколько регистров. Запись в них определённых значений меняет режим работы порта. Эти регистры адресуются от базового адреса контроллера.
    _outp(COMBase+3,0x80); - Line Control Register (LCR). Установка старшего бита разрешает доступ к делителю.
    _outp(COMBase,0x01); - установка младшего байта делителя (0x01 => 115200 tick/s).
    _outp(COMBase+3,0x03); - отключение доступа к делителю и установка размера символа 8 бит, 1 стоп-бит, без контроля чётности.
    _outp(COMBase+1,0x00); - Inerrupt Enable Register (IER), запрет всех прерываний.
    _outp(COMBase+2,0xC7); - FIFO Control Register (FCR), разрешить буферы FIFO размером 14 байт и очистить их.
    _inp(COMBase); - прочитать байт из буфера.
    www.osdever.net/documents/CP_serial.pdf
    Ответ написан
    Комментировать
  • Discord бот не видит файл "prefix.txt", как решить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Спросите там, где вы взяли код.
    Ответ написан
    2 комментария
  • Зависит ли поиск работы от наличия высшего образования?

    @Niksak
    Я веб погромуля, опыт около двух лет, вышки нет, вполне вкатился с помощью самообучения ( есть спец среднее образование )
    Ток спрашивали учусь ли, пойду ли на вышку после, говорил что нет ( и меня не брали лол ), но вполне себе работаю ща
    Ответ написан
    Комментировать
  • В чем отличие ngnix от golang?

    @deliro
    nginx — это реверс-прокси
    go — это яп.

    в чём вопрос-то?

    то как go может работать на ngnix?

    nginx проксирует запрос в сервер на го, который пишет программист. Цепочка проксей может быть сколько угодно большой. Ты можешь поставить nginx -> nginx -> caddy -> nginx -> gin, никто не запрещает.
    Ответ написан
    3 комментария
  • Как мне убрать несколько символов из tuple?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Изучать самые основы языка.
    Ответ написан
    4 комментария
  • Как спарсить заголовок из title?

    Maksim_64
    @Maksim_64
    Data Analyst
    team = old.find("a")['title'] перед этим обернуть все try except потому что у тебя значение для некоторых 'a' получает значение None.
    То есть как то так
    for old in all_old_teams:
        try:
            team = old.find("a")['title']
            print(team)
        except TypeError:
            print(None)
    Ну и свою логику там настраивай собирай их куда тебе надо и т.д.
    Ответ написан
    1 комментарий
  • Что за ошибка в python?

    Vindicar
    @Vindicar
    RTFM!
    Поясню ответ Алан Гибизов: Обратный слэш (\) в строковых литералах Питона (как и во многих языках) имеет специальное значение, зависящее от следующего символа. Например, \n означает символ перевода строки, \t - символ табуляции, и т.д. Последовательность \u позволяет задать символ юникода по его коду, например, символ \u00A7 это значок параграфа (§). Но это также разделитель каталогов в пути на платформе Windows. А у тебя в пути есть последовательность "C:\Users\777\Desktop\Новая папка\67.png".
    Избежать этого конфликта можно одним из трёх способов:
    * использовать последовательность \\ - она означает просто символ \ без специального поведения.
    * использовать "сырой" строковой литерал - my_path = r'C:\Users\'. В таких литералах символ \ не имеет специального поведения, это просто символ.
    * Записать путь, используя прямой слэш /. Винда это позволяет.
    Ответ написан
    Комментировать
  • Что за ошибка в python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Попробуйте варианты:
    Поставить r перед строкой пути
    my_path = r'C:\Users\'
    Задвоить все слеши
    my_path = 'C:\\Users\\'
    Заменить все слеши на обратные
    my_path = 'C:/Users/'
    Ответ написан
    1 комментарий
  • Как сделать свою колонку с Алисой?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Чтобы сделать свою Алису нужна такая же инфраструктура, толпа спецов и объëмы данных, как у Яндекса.
    Ответ написан
    1 комментарий
  • Как вывести только значение из списка?

    alexhadock
    @alexhadock
    Just a tech
    Привет

    Добавьте после fetchall()
    show1 = show1[0][0]
    Ответ написан
    3 комментария
  • Не ищет картинку. Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Да, Python.
    Ответ написан
    1 комментарий