Задать вопрос
  • Как заставить CentOS правильно отображать длину кириллических символов в консоли?

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

    locale - показывает текущие параметры локали
    locale -a - показывает весь список доступных локалей
    localectl - утилита от systemd

    Если настроенная локаль отсутствует в общем списке, то locale и некоторые другие приложения (например, perl) будут ругаться на это.

    Чтобы сгенерировать недостающую нужную локаль, можно использовать localedef:

    localedef ru_RU.UTF-8 -f UTF-8 -i ru_RU

    В некоторых системах (в частности, на базе Debian и Gentoo) вместо localedef можно использовать другую утилиту locale-gen. Также в Debian/Ubuntu можно добавить локали галочками в списке с помощью dpkg-reconfigure locales.

    Уже запущенные приложения надо перезапустить, чтобы они увидили новую локаль, в частности, приложения, запускаемые при логине в систему, перезапустятся при следующем входе.
    Ответ написан
    Комментировать
  • Как узнать статус пользователя Telegram (онлайн\оффлайн)?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Bots API не позволяет узнать состояние онлайна пользователя. Это можно узнать только через клиентский API.
    Ответ написан
    Комментировать
  • Ограничение на добавление в группу Telegram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это настройки приватности у соответствующего пользователя. Следует попросить пользователя обменяться контактами, или на время это отключить, или попросить добавить другого участника чата, с которым этот пользователь состоит в контактах.
    Ответ написан
    Комментировать
  • Как разобраться с выводом valgrind?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    При попадании в блок:
    if (!result)
    память реально НЕ выделена и free от неё - это попытка освободить память по адресу NULL. Разумеется, это не будет работать.

    upd: Прочитал вопрос ещё раз внимательнее. Надо не забывать делать free в конечном месте использования этого result:

    result = get_next_line();<br>
    ...do_something_with_result...<br>
    free(result);


    Иначе да, при каждом вызове get_next_line будет выделяться новый блок на 2 байта.
    Ответ написан
    3 комментария
  • Как проверить хэш PHP функции crypt на Python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В python есть такая же функция в модуле crypt.

    $hash = crypt ($password, $salt);

    from crypt import crypt
    hash = crypt (password, salt)
    Ответ написан
    Комментировать
  • Расшифровывается QRcode в TelegramBotAPI, но расшифровывает характеристики фотографии?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Очевидно, потому что data представляет из себя экземпляр класса Decoded. Думаю, тебе нужно data.data, да ещё и привести тип bytes к строке: data.data.decode()
    Ответ написан
    1 комментарий
  • Какой есть сервис, где можно отправить смс, можно платно?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Операторы сейчас вовсю борются с массовыми смс с федеральными номерами. Поэтому крупные сервисы не могут это предоставлять надёжно. Если используются сим-банки - то их быстро банят. Отправка через SS7 мимо interconnect сейчас работает очень плохо, остались только какие-то серые схемы, в которых уровень доставки уже ниже 50%.

    Легальный способ - аренда имени у всех операторов. Это дорого, да. Но операторы под предлогом борьбы со спамом вынуждают к этому. Либо придётся соглашаться на общие имена у конкретных сервисов (да, я уже прочитал, что тебе этого не хочется).

    И последний способ, который условно нелегален, но при 10 смс в месяц вряд ли кто-то заметит: воткнуть GSM-модем с симкой в свой компьютер/сервер и отправлять через него.

    Но вообще если это всё для тестирования, то реальная отправка смс вообще непонятно зачем нужна. Сгенерил код в приложении - он появился в логах - ввёл код из логов в клиентском интерфейсе.
    Ответ написан
  • Что делать если бот не отвечает на команду?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Судя по коду, ты вообще не понимаешь, что написал.

    inp будет содержать строку, введённую с клавиатуры, cmds - пустой список

    Дальше проверяется inp == cmds. Очевидно, что пустой список никогда не равен строке, поэтому мы сразу попадаем в else и один раз выполнем этот блок, после этого программа автоматически хавершается.

    Возьми любой учебник по Python (например, Лутца) и изучи основы. Без понимания базовых вещей вообще ничего осмысленного ты никогда не напишешь.
    Ответ написан
    Комментировать
  • Ошибка из за message.delete()?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Настройки сервера - Модерация - выключить требование 2FA.

    Пишут также, что надо включить 2FA у аккаунта создателя бота, но это кажется нелогичным.
    Ответ написан
  • Как cпарсить тег конкретный тег html если его класс повторяется мне это надо сделать через beautifulsou?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Просто перебрать все нужные:

    for node in xxx.findall('div', class_='foobar'):
      ...
    Ответ написан
    Комментировать
  • Ошибка в sqlite3, поможете?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    cursor.execute возврашает итерируемый генератор результатов. Можно либо пробежаться по нему:

    for row in cursor.execute(...):
       cash, = row
       # или
       cash = row[0]


    Либо сделать fetchall:

    res = cursor.execute(...)
    res_list = res.fetchall()
    cash = res_list[0][0]
    Ответ написан
    1 комментарий
  • Через какой сервис использовать Whatsapp API?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Напрямую доступ к API может получить разве только какая-нибудь крупная транснациональная компания. Менее крупным следует обращаться к агрегаторам-партнёрам. Официальный список

    Подключиться могут только бизнесы (можно ИП), причём есть ограничения, например, нельзя продавцам алкоголя и лекарств.

    При выборе следует ориентироваться на две основные вещи: на ценовую политику и на наличие нужных интеграций. Далеко не всякого поставщика поддерживает bitrix, jivochat или что там ещё у вас планируется. До кучи, может влиять юрисдикция конкретного поставщика. Далеко не всем может быть удобно заключать договор с Сингапуром или переводить платежи в Ирландию.

    Выбрав, можно выяснять уже детали подключения, используемый протокол и всё такое. Обычно каждый провайдер заинтересован, чтобы к нему больше подключались, и потому с удовольствием ответит на любые вопросы.

    Разумеется, надо быть готовым к тому, что стоит использование этого API дороже, чем отправка смс.
    Ответ написан
    Комментировать
  • Как получить сообщения из чата без бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак, вообще. Нужно иметь бота, добавленного в этот чат, и делать запрос строго с токеном бота. Без бота использовать Bot API не получится (что весьма логично).
    Ответ написан
    Комментировать
  • Почему приходится вводить Enter чтобы программа дальше работала?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что input считает Enter признаком конца ввода. Пока Enter не нажмёшь, он ожидает ввод.

    Тут нужен аналог getch в DOS/Windows, вот пример модуля, который это реализует https://github.com/joeyespo/py-getch
    Ответ написан
    Комментировать
  • JVM для встраивания в С код существует ли?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ввёл в гугле embedded jvm in c и получил некоторое количество ссылок, например:
    https://stackoverflow.com/a/7506378
    https://www.developer.com/java/data/how-to-create-...
    Полагаю, можно использовать примерно на любой платформе, для которой есть JDK.
    Ответ написан
    Комментировать
  • Как правильно прописать проверку ввода чисел на питоне для ТГ бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    А что, по-твоему, эта функция должна делать? Она делает ровно то, что в ней написано: отправляет сообщение "введи числа" и потом тут же проверяет цифры в предыдущем сообщении пользователя.

    Гугли примеры register_next_step_handler (если это телебот) или "название_библиотеки finite states machine" в общем случае.
    Ответ написан
    Комментировать
  • Может ли Telegram бот читать каналы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нет, боту доступны только те каналы, в которые их добавит администратор канала. Читать произвольные каналы можно только с помощью клиентского API.
    Ответ написан
    2 комментария
  • Передача данных в callback_data с pyTelegramBotAPI?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно просто запоминать текст пользователя, а в callback_data передавать какие-нибудь кодовые обозначения нажимаемых кнопок. При получении от пользователя кода кнопки можно по его id достать ранее сохранённый текст и выполнить все нужные действия.
    Ответ написан
    Комментировать
  • При наличии on_message(), @bot.command не работает, что делать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сейчас в коде какая-то каша. Зачем внутри класса MyClient, порождённого от Client, использовать методы с декораторами от ранее созданного инстанса другого потомка Client - commands.Bot? Это не имеет никакого смысла. Убери класс MyClient вообще, а все его методы перенеси на уровень выше (с соответствующим убиранием self везде в аргументах и заменой self на bot в коде). Вместо client.run сделай bot.run.
    Ответ написан
    Комментировать
  • Как записать несколько строк в файл bash?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В копилку к вышесказанному:

    echo -e "str1\nstr2\nstr3" >> file.txt
    Ответ написан
    2 комментария