Задать вопрос
  • Почему callback_query_handler в telebot не работает?

    Vindicar
    @Vindicar
    RTFM!
    Потому что от того, что ты написал message: Message, у тебя в обработчике волшебным образом доступ к объекту message из совсем другой (и уже отработавшей) функции не появится.
    Лучше разберись, что ещё лежит в объекте callback - там вполне достаточно информации для отправки ответа.
    Ответ написан
    Комментировать
  • Почему callback_query_handler в telebot не работает?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Вот смотри:

    message: Message

    Чему равно message после такой инструкции? Как по-твоему оно должно работать? Попробуй его напечатать.

    Программировать нужно не методом тыка, а понимая язык, на котором пишешь.
    Ответ написан
    Комментировать
  • С чего начать, чтобы разбираться в Telegram MiniApp и чётко ставить задачи разработчикам?

    @Refguser
    Решения для бизнеса: корп.сайты, ИМ, боты и пр.
    1. Сколько сейчас по рынку стоит создание качественного, продвинутого MiniApp (не базового, а с интерфейсом, авторизацией, интеграциями и т.д.)?


    MiniApp - это по сути сайт. Стоимость от бесплатно до миллионов. Всё зависит от ТЗ и бюджета.

    2. Можно ли за пару месяцев разобраться в базовых принципах MiniApp-разработки, чтобы понимать архитектуру, этапы и грамотно ставить задачи?

    Заказчику не нужно разбираться в принципах разработки. Ему нужно грамотно составить ТЗ. Своими словами, но так чтобы его понял исполнитель (если употребляются термины - они должны быть объяснены).
    И помнить - всё, что не указано в ТЗ будет не сделано или сделано на усмотрение разработчика.
    И конечно определится с бюджетом

    Эти моменты мы проговаривали устно, и разработчик .. в итоге он их не сделал.

    Вот поэтому я против устной болтовни. Всё важное только письменно. И желательно по электропочте.
    Устно можно обговорить мелкие детали, дать/получить объяснения непонятного. Но по итогу всё должно быть зафиксировано письменно. Даже если это не будет в ТЗ - будет в переписке и не потеряется.
    Ответ написан
    Комментировать
  • Какие есть простые легковесные LLM для локального использования?

    @rPman
    Настоятельно рекомендую не ждать ответа от сообщества и не гадать, а установить что то типа lmstudio или ollama и используя их интерфейс по перебирать модели, подходящие под ваши требования на своих задачах (можно заранее собрать тестовый набор и попросить ИИ написать код для его проверки автоматически), эти утилиты поднимают llama.cpp сервер, c совместимым с openai api.

    Легковестными и терпимыми кодогенераторами являются либо специализированные модели (в название code) либо что-нибудь от топов - google gemma, microsoft phi4, openai oss (лично не пробовал но говорят что даже 20b терпимая, и почти наверняка ее можно использовать как ускоритель для 200b) и может быть qwen3 30b a3b.

    p.s. готовь 64гб ram минимум (лучше 128гб в идеале 196гб, тогда можно потрогать топовые типа deepseek), мало хранить веса, нужно еще контекстное окно обслуживать. Есть алгоритмы, позволяющие неплохо ускорять MoE модели, не влезающие в gpu, только малым их количеством (например на 196гб ram + 24gb vram запускают deepseek с несколько токенов в секунду).

    денег, которые ты потратишь на апгрейд железа хватит на месяцы и годы на использование облачных api, это при использовании топовых моделей, а если брать дешевые слабые (сравнимые с opensource) то и подавно.

    И главное, сносное качество открытые модели дают в режиме рассуждения, которое кратно увеличивает время до получения ответа (десяток минут), стоит ли оно того?
    Ответ написан
    Комментировать
  • Апгрейда разраба с помощью нейросетки, с чего начать в 2025 году?

    Kentavr16
    @Kentavr16
    long cold winter
    Дополню ответы и комменты к ним.

    В вопросе правильно указано различие между скоростью и качеством работы программиста. По состоянию на сейчас разумнее всего рассматривать нейронки как коллегу , который супербыстро гуглит. Соответственно прокачка скорости работы - практически моментальная (при условии платного решения, присоединяюсь к ответу fkk и также рекомендую сонет интегрированый в IDE) Для меня прирост именно скорости написания составил минимум процентов 30 - почти полностью удалось делегировать написание тестов (особенно полезно), первичный рефакторинг/мелкое разбиение кода и тд.

    По улучшению качества работы все более размыто. ИИ отлично показывает себя как тренер для уровня интерна. при этом чем выше уровень, тем бесполезнее ИИ. Тут я на 90 процентов уверен что начиная с уровня мидл+ роль ИИ в обучении сводится у роли навороченной песочницы. Растить спеца ИМХО придется через практический опыт и толстые книги.

    П.С. - не ведитесь на маркетинг вокруг ИИ. Я считаю что у нейронок огромный потенциал, но судя по всему они еще минимум лет 5-7 будут вторичны. Это не программист и не учитель. Это крутое автодополнение которое помогает мясной прокладке между стулом и монитором.
    Ответ написан
    Комментировать
  • Как и чем осуществлять контроль за сотрудниками от обхода компании?

    @Drno
    Ну вот встретятся они с заказчиком для обсуждения \ подписей...
    и там договорятся
    как Вы это предотвратите?)
    Ответ написан
    Комментировать
  • Что можно улучшить или оптимизировать в коде, чтобы он не был таким длинным?

    @Everything_is_bad
    Надоел каждый раз прибегать с такими вопросами (проблема что наша помощь не помогает, ты не учишься, каждый раз подобный треш выдаешь, либо опять тут проблема не в питоне, а в алгоритмах), сходи уже к LLM, они нормально могут предложить вариант, даже на такой кривой код как у тебя.
    Ответ написан
    Комментировать
  • Как получить из URL имя страницы?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Если исходить из условия, то вам достаточно:
    url = 'test.com/dir1/dir2/dir3/page.html'
    page_name = url.split('/')[-1]
    print(page_name)
    >>>page.html

    И зачем нужен остальной код непонятно.
    Ответ написан
    2 комментария
  • Дашборд. Какую методу сбора данных и платформу выбрать для разработки?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Автоматизируя хаос, вы получите хаос, только автоматизированный.
    У вас должна быть единая система, агрегирующая данные из разных источников, и позволяющяя их отобразить в нужном вам виде.
    1С позволяет это сделать, причем все, и сбор данных из разных источников, и их хранение, и визуализацию через Web, и настройку прав доступа с авторизацией. Если у вас есть специалисты по 1С, делайте в 1С.
    Эксель тоже позволяет это сделать, результат вы получите быстрее чем с 1С, но это будет куча костылей, которые нужно будет постоянно подвязывать.
    Написать собственное решение или использовать еще какое-либо готовое, тоже нормальный вариант.
    Вам нужно сейчас четко разложить по полочкам, какие у вас есть данные, какие нужно строить отчеты (вплоть до формул расчета конкретных показателей), проверить, что данных для этих отчетов достаточно.
    Затем оглянуться какие у вас есть специалисты, или оценить бюджет, и тогда принимать решение о конкретной реализации.
    Ответ написан
    1 комментарий
  • Как получить названия прав с Журнала Регистрации в 1с?

    @Dementor
    программист, архитектор, аналитик
    В журнале регистрации по событию "Отказа доступа" такое не регистрирует, он не показывает названия прав, лишь роли.

    Все с точностью до наоборот. Журнал регистрации абсолютно ничего не знает про роли, которых могут быть сотни в конфигурациях на базе БСП и в которых права часто дублируются. В журнале фиксируются отсутствие именно прав на чтение, добавление, изменения и так далее.

    По факту отсутствия конкретных прав на объекты администратор должен проанализировать профиль пользователя и добавить в него роли, в которых данные права указаны.
    Ответ написан
    Комментировать
  • DevOps риски, фабрика или скам?

    Maksim_64
    @Maksim_64
    ML Engineer
    Сомневаешься не делай, делаешь не сомневайся.

    Ты не сможешь развиваться, работать, и т.д., если ты заведомо сильно сомневаешься в работодателе.

    Если тебя сильно что-то смущает и интуиция говорит, не связываться - значит не связывайся.
    Ответ написан
    1 комментарий
  • Оператор, операция, функция, процедура - что всё это значит?

    @rPman
    Это разные названия действий/команд, применяемых в разных ситуациях, не в каждом языке есть каждый из описанных.
    * Оператор (и действие, которое он вызывает - операция) - это пришедшие из математики действия, классические +, -, /, *, символ присвоения = (в разных языка по разному, например pascal :=) или сравнения == (соответственно = в pascal) или логические операции (и/или/не/..),..

    Синтаксически выделяют их как что то записанное рядом с операндами (то с чем производится операция), например слева/справа - ++i, !i, -1, i++, или между двумя i+y, или теранрная операция в c++ - условие?если_истина:если_ложь из трех операндов.

    В некоторых языках может быть переопределена программистом (например в c++) для своих типов

    * функция, процедура - это действия, определяемые программистом, по имени и иногда (в c/c++) по типам их аргументов (то над чем производится действие), это так же пришло из математики, функция возвращает результат а процедура нет (больше они ничем не отличаются).

    Синтаксически обычно это имя ( аргументы через запятую) но встречаются выверты типа lisp (имя аргументы через пробел) и кстати операция + там тоже функция (собственно кроме этих скобок там ничего нет)

    * есть еще методы классов, в языках с объектно ориентированным уклоном (но не обязательно, например в c так тоже можно похоже, с определенными усилиями, но это совпадение), когда добавляется 'синтаксический сахар' для указания одного (условно главного) параметра функции/процедуры по другому, групируя место описания этих методов в одном месте и добавляя различные методы наследования и самоограничений доступа.

    Синтаксически это выглядит как экземпляр_объекта -> метод (аргументы,..) (вместо -> может быть '.', '->', '::' (в cpp и аналогах обращение к статическому методу класса а не к объекту) ну и всякие синтаксические извращения javascript по имени obj["method"](args)

    p.s. настоятельно рекомендую, воспользуйся современными инструментами работы с документацией, особенно подходящие для новичков (с оговорками про галлюцинации, т.е. держи в голове что факты нужно перепроверять) - ИИ, хоть бесплатными штатным майкрософтовским copilot.microsoft.com (он так же встроен в edge и в windows 11 но требует vpn в россии, с ним можно голосом поговорить, добавив при старте что ты хочешь что бы он тебе помогал в обучении и наводящими вопросами после объяснения проверял, верно ли ты все понял) хоть платным (рекомендую) от chatgpt.com/deppseek/xai/.. еще лучше воспользуйся агрегатором типа openrouter
    Ответ написан
    4 комментария
  • Как получить список прав в 1с программно?

    fosihas
    @fosihas
    Автоматизации учета на 1С.
    Обратиться к метаданным 1С
    Для каждого Роль Из Метаданные.Роли Цикл

    все придумали до нас)))
    https://github.com/VorozhbitDM/Access-control-1C
    Ответ написан
    Комментировать
  • Где искать фриланс вакансии без портфолио (Кроме фриланс бирж)?

    @Taras_Phu
    Первые заказы часто можно получить из записной книжки. Открываем телефон, листаем и ищем того кто готов купить услугу. Работает в любой нише, в любое время.
    Ответ написан
    Комментировать
  • Как хранить и показывать локальные файлы в CRM (frontend + backend)?

    Adamos
    @Adamos
    Хранить файлы в БД - это либо очень узкий кейс с файлами меньше 4 кб, либо некомпетентность.
    В БД хранится информация о файлах.
    Сами файлы складываются в папочку storage под хэшированным именем, а в БД хранится:
    - их настоящее имя и расширение (возможно, тип)
    - доступ (публичный или через скрипт после авторизации)
    - принадлежность (не автор, а объект в бизнес-логике, которому этот файл принадлежит)
    - ну, и та техническая информация, которая требуется (вот тут автор, время, правки etc.)
    Соответственно, для фронта бэком генерируются ссылки на нужные файлы, публичные - прямые, непубличные - на роутер, который их обработает.
    Ответ написан
    9 комментариев
  • Как сделать отправку файла боту от клиента на python telebot?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    import telebot
    
    TOKEN = 'YOUR_BOT_TOKEN'  # Замени на токен своего бота
    bot = telebot.TeleBot(TOKEN)
    
    # Обработка входящего документа (файла)
    @bot.message_handler(content_types=['document'])
    def handle_document(message):
        file_info = bot.get_file(message.document.file_id)
        downloaded_file = bot.download_file(file_info.file_path)
    
        # Сохраняем файл локально
        with open(message.document.file_name, 'wb') as new_file:
            new_file.write(downloaded_file)
    
        bot.reply_to(message, f"Файл '{message.document.file_name}' успешно получен и сохранен!")
    
    # Обработка команды /start
    @bot.message_handler(commands=['start'])
    def start_message(message):
        bot.send_message(message.chat.id, "Привет! Отправь мне файл, и я его сохраню.")
    
    bot.polling()


    'document' — для файлов (PDF, DOCX, TXT и т.д.)

    'photo' — для изображений
    'audio' — для аудио
    'video' — для видео
    'voice' — для голосовых сообщений
    Ответ написан
    4 комментария
  • Бот долго отвечает сообщением, где фото+текст. Как исправить?

    @twistfire92
    Python backend developer
    По-хорошему нужно фото на сервер загрузить один раз и сохранить его file_id. И все дальнейшие ответы с этим фото реализовывать через этот file_id, а не загружая каждый раз одно и то же фото. Вполне возможно это ускорит ответ.

    Как и где хранить этот file_id для фото нужного товара - тема отдельного вопроса. Обычно используется БД для подобных вещей, но у вас уже есть какой-то словарь products со словарями внутри. Предлагаю каждый элемент этого словаря расширить ключом file_id.
    Далее логика следующая:

    Когда нужно отправить фото товара, смотрите сначала на значение в file_id.
    - Если оно пустое - отправляете по-старому сценарию, только сначала дождитесь ответа от метода message.answer_photo(). Результатом этого метода будет объект Message, в котором можно найти file_id для вашего загруженного файла (поиски возложу на вас). Просто прописываете его в ваш словарь products[product_id][file_id].

    - Если значение file_id заполнено, то делаете все то же самое, что и сейчас, только в методе message.answer_photo() в параметре photo передаете file_id.

    получается, что сам файл будет загружен на сервер только один раз, а все остальные разы будет браться только с сервера. Кстати в документации Bot API так и сказано, что предпочтительнее использовать file_id, нежели каждый раз загружать файлы на сервера телеги.
    Ответ написан
    1 комментарий
  • Какие импорты лучше использовать в Python?

    @Everything_is_bad
    Лучше абсолютные, даже в pep8 это упоминается https://peps.python.org/pep-0008/#imports

    И не нужно сюда прибегать с подобными вопросами, ответ давно находится через гугл, а если ты так не осилил гугл, сходи сначала в чатпгпт и подобные.
    ЗЫ единственная польза вопроса, для hr, сразу смело можно отказывать ТС.
    Ответ написан
    2 комментария
  • Как записывать НаборЗаписей регистра сведений внутри цикла?

    @Dementor
    программист, архитектор, аналитик
    С первого взгляда - какая-то чушь. Со второго - еще большая чушь!

    1) Тут два цикла - верхний по всем существующим записям РегистрыСведений.ДанныеСотрудников, а вложенный по всем строкам начиная со второй. Уже это само по себе не имеет смысла, так как выходит, что цель программы - записать в ячейку НомерТС значение из последней строки файла.

    2) Записывать набор записей внутри цикла по его же записям - это ужасная идея!!! Откинем вероятный код из модуля набора записей, который может изменять состав и/или последовательность строк, но и тогда это просто расточительно - на каждом витке цикла записывать одно и то же

    3) Ужасное наименование переменных, чтобы запутать самого себя! Если транспортное средство ищется в базе по первой колонке из файла, то какого лешего ее назвали "Водитель", а не "Транспорт"??? Если в колонку НомерТС записывается значение из второй колонки файла, какого лешего ее назвали "Транспорт", а не "НомерТранспорта"???

    4) Что за странная установка наименования транспортного средства? Если в базе выполняется поиск по наименованию из переменной Водитель (хотя на самом деле там Транспорт), то именно это значение и нужно записать в название, чтобы поиск сработал на следующем витке цикла! А вовсе не сайд-эффекты по справочнику Сотрудников с помощью Справочники.Сотрудники.НайтиПоНаименованию(Водитель):
    4.1) В справочнике Сотрудников может не существовать нужного элемента и в отличии от Транспорта тут нет создания недостающего элемента (в принципе он и не нужен, так как в этом коде справочник "Сотрудники" нигде не используется)
    4.2) Если менять представление в настройках справочник "Сотрудники" и/или в менеджере справочника, то платформа 1С ничего не подскажет о том, что в коде загрузки транспорта может что-то сломаться. Поэтому сайд-эффекты запрещено применять всюду кроме разовых обработок для правки данных, когда риск осознается.

    5) Алгоритм не имеет смысла. Подозреваю, что в файле указан транспорт для существующих пользователей, по которому нужно обновить регистр ДанныеСотрудников. Тогда нужно:
    5.1) Сначала пройти по файлу и сформировать таблицу (можно структуру или соответствие), в которую поместить данные по владению транспортом.
    5.2) В цикле по файлу проверять существование транспорта в базе не по наименованию "моя тайота", а по гос.номеру или по вин-коду.
    5.3) Сотрудника тоже желательно искать не по ФИО, а по табельному номеру, налоговому или паспортному номеру.
    5.4) В регистр ДанныеСотрудников не имеет смысл помещает номер автомобиля - так как все будущие операции потребуют поиск по реквизиту "номер" для каждой строчки! Нужно поместить ссылку на элемент справочника "Транспорт"
    5.5) Имея таблицу (можно структуру или соответствие) из пункта 5.1 проходим циклом по ее строкам, создаем менеджер записи с отбором по Сотруднику-Владельцу, если запись выбирается, то устанавливаем ссылку на транспорт и записываем.
    Ответ написан
    3 комментария
  • Как отслеживать геопозицию в реально времени в телеграмм боте?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Бот не может запросить у пользователя Live Location.
    Пользователь должен сам инициировать отправку Live Location, тогда она периодически будет обновляться через сообщения edited_message, пока не пройдёт заданный пользователем период отслеживания или пользователь сам не остановит отслеживание.
    Ответ написан
    Комментировать