• Быстрый старт в IT с хорошей базой?

    DevMan
    @DevMan
    все описанные скилы на фрилансе вообще не роялят: там в первую очередь важен единственный скилл - продать себя.
    затем следует понимание процессов и задач: клиента вообще не интересует path_finding и прочая заумная хрень, его интересует реализация свои хотелок ещё вчера, даже если она из говнопалок, но работает.
    серьезных/крупных клиентов на фрилансе нет. максимум - развитие стартапа или какого-то локального среднячка.

    ну и отдельно: "старт в it" и "старт в фрилансе" - два разных человека.
    Ответ написан
    1 комментарий
  • Нет ошибок, но telegramm бот не работает?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Нет ошибок, но telegramm бот не работает?
    Да, не работает.
    Надо убрать цикл и разобраться, как именно работает бот и почему цикл всё портит.
    Ответ написан
    1 комментарий
  • Как отправить в канал html с картинками используя telegram bot api?

    Никак. Только распарить этот HTML и отправить в виде группы с медиа.
    В телеге всё-таки не полноценный html.
    Ну или вставить это в статью в telegraph
    Ответ написан
    Комментировать
  • Как ускорить работу Python в разы?

    Vindicar
    @Vindicar
    RTFM!
    Ты документацию читал?
    get_symbol_ticker(**params)[source]
    Latest price for a symbol or symbols.

    Выделение моё. Судя по докам, get_symbol_ticker() позволяет за один запрос получать инфу сразу о нескольких символах. Готов спорить, что это будет быстрее.

    Так как в заголовке функции **params вместо нормального описания параметров, я подозреваю, что переданные параметры пробрасываются прямиком в API binance. Открываем доки на это API, благо ссылка есть прямо в первых доках. Видимо, что можно в параметрах передать строку symbol, или строку-список symbols вида
    ["BTCUSDT","BNBUSDT"]. Как я понял, это именно строка такого вида, а не список.

    Вот скажи мне, что тебе помешало найти эту информацию самостоятельно? Две минуты гуглежа, и это при том что я с бинансом не работал вообще.

    Ну и да, серьёзно? f'{str(ticker1)}', притом что ticker1 - это уже заведомо строка? Больше строк богу строк...
    Ответ написан
    Комментировать
  • Как сделать, чтобы бот отвечал определенным сообщением с Inline кнопками на слово, которое я ему отправлю?

    ilya_krasin
    @ilya_krasin
    Начинающий программист
    Сделать это можно вот так:
    import telebot
    from telebot import types
    
    bot = telebot.TeleBot('TOKKEN') #здесь должен быть токкен вашего бота
    
    @bot.message_handler(commands=['start', 'menu'])
    def Welcom(message):
     mesg = bot.send_message(message.chat.id, f"Привет, {message.from_user.first_name}. Введите Ваш город")
     bot.register_next_step_handler(mesg, city) #здесь бот ждёт пока пользователь введёт что либо в чат
     
    def city(message):
      if message.text == 'Москва': #здесь мы указываем то что должен ввести пользователь
        bot.send_message(message.chat.id, 'Москва ваш город') #если пользователь ввёл нужное слово или фразу то бот отправит это сообщение
      else:
              bot.send_message(message.chat.id, 'Мне не удалось ничего найти') #если пользователь ввел что-то не то бот отправит это сообщение 
     
    bot.polling(none_stop=True)

    В строке bot.register_next_step_handler(mesg, city) mesg - это переменная в которую вы помещаете сообщение, а city - это название функции отвечающей за то какие слова и фразы должен писать пользователь чтобы бот ему ответил.
    Так же к сообщению можно прикрепить кнопки, просто пропишите их после message.text == 'Москва': и прикрепите к сообщению, аналогично и с остальными фразами .
    Для добавления большего количества фраз просто отделяйте каждое сообщение с помощью elif
    Пример:
    def city(message):
      if message.text == 'Москва':
        bot.send_message(message.chat.id, 'Москва ваш город') 
      elif message.text == 'Санкт-Петербург':
        bot.send_message(message.chat.id, 'Санкт-Петербург ваш город')
      else:
              bot.send_message(message.chat.id, 'Мне не удалось ничего найти')
    Ответ написан
    3 комментария
  • Как написать функцию, которая будет выводить на экран пирамиду заданной длины?

    @twistfire92
    Python backend developer
    def pyramid(heigth, character='*'):
        if heigth < 0:
            start, stop, step = abs(heigth)+1, 0, -1
        else:
            start, stop, step = 1, heigth+1, 1
    
    
        for i in range(start, stop, step):
            print(character*i)
    Ответ написан
    Комментировать
  • Как сделать непадающий telegram bot?

    @Mikhail5482
    while True:
    try:
    bot.polling()
    except:
    continue
    bot.polling() используется в библиотеке pyTelegramBotAPI - код постоянно повторяется
    Ответ написан
    1 комментарий
  • Как обработать сразу несколько строк из запроса бд?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    SELECT sum(game), sum(win) FROM wins WHERE id = ?
    И будет всегда одна строка с посчитанной суммой.
    То есть надо использовать не fetchall, а fetchone()

    А в общем случае обычная работа с коллекцией
    sum_game=0
    sum_win=0
    for row in jbs:
        sum_game +=row[0]
    Ответ написан
    Комментировать
  • Есть ли какие-то сервисы или форумы, куда можно выложить свой код, чтобы его могли оценить и оптимизировать другие люди?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Если код выполняет свою задачу и устраивает бизнес - значит достаточно хороший.

    Если хотите расти как разработчик - читайте стандарты, переписывайте код чтобы он им соответствовал (name convention или для питона вообще PEP 8)

    Основная задача красивого кода - легкое чтение и изменение. Подразумевается что быстро вникнуть в код и изменить его сможет не оригинальный автор, а другой разработчик.

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

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

    Vindicar
    @Vindicar
    RTFM!
    async def choice_cat(message):
        CATs = cur.execute(f'SELECT name FROM cathlete WHERE id = "{message.from_user.id}"').fetchall()
        for fds in range(len(CATs)):
            astt = ReplyKeyboardMarkup(resize_keyboard=True).add(KeyboardButton(f"CATs[{fds}]"))


    Код, конечно, жесть. По пунктам:
    1. НИКОГДА не генерируй SQL запрос через форматирование строк. Легко словить ошибку, а если очень не повезёт - SQL-инъекцию. Используй подстановку параметров (ссылка для sqlite, если у тебя другая БД - ищи доки на неё).
    2. Как насчёт проверить, а вернула ли БД хоть что-то? Это не гарантируется. Всегда ожидай подставы.
    3. Зачем итерироваться по индексу списка, если ты индекс не используешь? Почему не итерироваться по самому списку? И да, это абсолютные основы питона, которые НАДО знать задолго до того, как браться за ботов.
    4. Зачем ты создаёшь новую клавиатуру на каждой итерации цикла? Тут уже даже не знания языка, тут простая логика. Создал клавиатуру, добавил кнопку - на следующей итерации выбросил старую клавиатуру, создал новую добавил другую кнопку. Ну бессмыслица же! Создай клавиатуру один раз, до цикла, и добавляй кнопки к ней.
    5. Ну тот факт, что ты не посылаешь сообщение, к которому будет прикреплена клавиатура (а сама по себе она не бывает!), это уже мелочи. Видимо, не дошёл ещё до этого этапа.

    kbd = ReplyKeyboardMarkup(resize_keyboard=True)
    btns = cur.execute(f'SELECT name FROM cathlete WHERE id = ?', (message.from_user.id,)).fetchall()
    # btns - список списков. 
    if not btns:
        # кнопки не предусмотрены, как-то даём пользователю знать об этом
        return  # если это фатально, останавливаемся тут
        # иначе создаём какое-то значение btns по умолчанию и  продолжаем
        # тут уж сам решай
    # делаем клавиатуру
    for btn in btns:
        kbd.add(KeyboardButton(btn[0]))
    # ну и отправляем её вместе с сообщением
    Ответ написан
    7 комментариев
  • Как сменить формат большому количеству файлов?

    @alexalexes
    1. Открыть командную строку.
    2. С помощью команд смены диска, смены каталога выбрать текущий каталог, в котором нужно произвести переименование.
    3. Запустить команду:
    FOR /R %f IN (*.bin) DO REN "%f" *.exe
    которая переименует все файлы в текущем каталоге, в том числе и во вложенных тоже.
    Ответ написан
    Комментировать
  • Как использовать random.randint() в телеграм боте?

    @serhiops
    Python/JavaScript/C++
    Как использовать random.randint() в телергам боте?

    так же, как и не в телеграм боте
    Ответ написан
    Комментировать
  • Какой системой можно вести отчётность?

    borisdenis
    @borisdenis
    Ленив и вреден...
    1С Документооборот допилить можно, возможно есть уже готовая конфигурация под ваши требования, но это надо к их внедренцам обратиться и они подскажут.
    Ответ написан
    Комментировать
  • Как передать переменную из одной функции в другую?

    @dmshar
    Вопрос не имеет никакого отношения к написанию ботов вообще, ни к telegram в частности. Вопрос имеет отношения к Python, его основам, а так-же к необходимости его изучения.
    Для передачи значений между функциями ВСЕГДА И ВЕЗДЕ существует ТРИ способа.
    1. Классический: в общей вызывающей программе создаете переменную, которую передаете как параметр в обе функции. В одной из этих функций эта переменная заполняется значением, в другой - читается и используется.
    2. Нерекомендуемый: через глобальную переменную.
    3. Для очень сложных систем: через внешний файл.
    Все.
    Вот и выбирайте тот из них, который вам подходит больше.
    Ответ написан
    Комментировать
  • Инструменты для проектирования архитектуры приложения?

    @mr_jumper
    Я бы начал с листика, карандаша и стирки. Ну и азов хотя бы умл и что естььархитектура.
    Ответ написан
    Комментировать
  • Данные из 1С через python telegram?

    @Dementor
    программист, архитектор, аналитик
    Поддержу вариант Константина с открытием REST-интерфейса на стороне 1С.

    Если на стороне python не планируются дополнительные возможности и он 100% будет делать транзит данных из/в 1С, то python в этой схеме 100% третий лишний и проще сделать бэкенд полностью на 1С.

    Загуглил про Brom - это набор библиотеки для python и расширения (плагина) для базы 1С. Выглядит как быстрое решение, но я бы не применял. Высокие риски - нет публичных аудитов безопасности и нужно верить разработчику на слово; вендерлок и нужно платить разработчику для исправления ошибок; отсутствуют возможности для кастомизации и расширения функционала. Все равно даже с Бромом нужно делать публикацию базы 1С на веб-сервере. Тогда уже проще в 1С опубликовать стандартный OData-интерфейс и использовать стандартные библиотеки python для работы с http и json.
    Ответ написан
    Комментировать
  • Оптимальный формат хранения изображения в текстовом виде?

    Griboks
    @Griboks
    Оптимальный вариант - это открыть бинарный формат в блокноте. Конечно, некоторые символы будут странно выглядеть, но зато это самый оптимальный вариант.
    Ответ написан
    Комментировать
  • Сколько запросов в секунду может обрабатывать telegram бот на long_polling?

    Когда стоит задуматься о переходе на webhook?

    В принципе изначально следует задуматься о переходе на вебхук. long polling - это больше про разработку, чем про прод.

    Сколько в секунду - зависит от лимитов самой телеги и того, как часто ты можешь отправлять очередной запрос на получение новых событий.
    Ответ написан
  • Как сопоставить поля пользователя при импорте заказов из 1с?

    @Dementor
    программист, архитектор, аналитик
    Я так понимаю, у полей нужно прописать XML_ID, но 1с-ник говорит, что в 1с у этих полей нет таких кодов

    Тогда пропишите те, которые есть! У вас уже есть специалист, которому вы платите, зачем вы пишете тут вопросы? Обычно из-за "а мне в интернетах совсем по другому сказали" хаос на проекте только усугубляется.
    Ответ написан
    Комментировать