• Почему не выводится результат в inline mode?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Всё прекрасно работает.

    615a38bc692d3060148638.png
    Ответ написан
  • Как сделать полный бекап сайта через rsync?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В чём проблема? Там проще некуда.

    rsync -av --progress user@host:/path/to/site/ /local/directory/for/site/

    (слеши на концах путей нужны)

    Можно на лету сжимать, добавив ключ -z.

    Если случится обрыв, rsync при следующем запуске продолжит с того же места, а также учтёт изменившиеся с тех пор файлы.
    Ответ написан
    Комментировать
  • Как узнать информацию о телеграм боте через токен на пайтон?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для этого модули вообще не нужны.

    https://api.telegram.org/bot{token}/getMe
    Ответ написан
    Комментировать
  • Как получить file_id в телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    При отправке фото можно получить его file_id и в следующий раз отправлять только его, например:

    files = {}
    if photo_name in files:
        file_id = files[photo_name]
        bot.send_photo(message.chat.id, file_id)
    else:
        with open(photo_name, "rb") as f:
            bot.send_chat_action(message.chat.id, "upload_photo")
            r = bot.send_photo(message.chat.id, f)
            file_id = r.photo[0].file_id
            files[photo_name] = file_id


    Для входящих сообщений:

    @bot.message_handler(content_types=['photo'])
    def image_message(message):
      file_id = message.photo[0].file_id
    Ответ написан
  • Как сделать время сообщения с часовым поясом?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не нужно самому составлять строковое время из компонент, есть же готовые методы

    datetime.datetime.now().strftime('%H:%M')

    Discord не предоставляет информацию о часовом поясе пользователя, так что показывать каждому его время в виде текста нельзя. Но можно добавить timestamp в embed, тогда каждый получит индивидуальное время с учётом своего часового пояса:

    embed = discord.Embed(title='test',timestamp=datetime.datetime.utcnow())
    Ответ написан
    Комментировать
  • Как перенести куки через nginx?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это вообще-то не к nginx вопрос. Решение о том, какие куки принимать в рассмотрение и передать в запросе к тому или иному домену, принимает браузер, и он должен это делать в соответствии с RFC 6265 (не путать с устаревшими RFC 2109, 2965, там есть отличия).

    Если коротко, то sub.domain.com может поставить куку как на sub.domain.com, так и просто на domain.com (в этом случае она будет также действовать на все поддомены одного уровня с sub.domain.com). Но domain.com не может поставить куку на домен com, потому что в домене должна быть минимум одна точка (такая защита).

    Для экспериментов можно поиграться с куками вот в этой песочнице с субдоменами: https://scripts.cmbuckley.co.uk/cookies.php и посмотреть
    Ответ написан
    Комментировать
  • Можно ли послать callback_data без кнопки в боте телеграм на aiogram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак. Именно нажатие на кнопку и генерирует callback, без нажатия его и не случится.
    Ответ написан
  • Как привязать карту к мобильному приложению на Java?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Например, Mapbox SDK до 25 тыс. пользователей в месяц бесплатно. Ну и вообще смотреть сюда для начального знакомства с вопросом.

    Кроме того, можно просто напрямую использовать тайловые сервера различных рендереров OSM, но нужно понимать, что у них может быть usage policy, например, у рендерера на главной странице официального сайта он такой, так что для активно используемого приложения лучше обратиться к коммерческим поставщикам или даже сделать рендеринг нужной территории самостоятельно (для территории одного города это потребует не так уж и много ресурсов).
    Ответ написан
  • Как побороть ошибку "Wrong response from the webhook: 404 Not Found"?

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не надо этого бояться. Postgresql идёт из пакетов уже минимально настроенным. Нужно потратить немного времени, чтобы научиться создавать пользователя и базу (руководств в сети полно), это будет намного проще, чем возиться с настройкой базы в докере.
    Ответ написан
    Комментировать
  • Как создать комнату в боте?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нельзя. Боты не могут создавать группы.

    Новую группу может создать только полноценный пользователь Telegram, так что это возможно реализовать только с помощью клиентского (MTProto) API.
    Ответ написан
    Комментировать
  • Через что сделать телеграм бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если надо, чтобы заказы на сайте приходили владельцу сайта в телеграм, то это довольно просто сделать. Надо просто создать бота, самому написать там /start (чтобы бот мог слать этому пользователю), получить свой id любым образом (например, через сторонних ботов) и сделать по факту заказа вызов запроса:

    https://api.telegram.org/botТУТМОЙТОКЕН/sendMessage?chat_id=мой_id&text=Текст+сообщения
    Ответ написан
    Комментировать
  • Работа с tuple, как сделать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Добавить волшебную запятую:
    values=('SimpleText',)
    Ответ написан
    4 комментария
  • Как правильно парсить сайты, чтобы не словить капчу?

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

    Например, я парсил один сайт, а он ровно после 500 страниц показал капчу. Весьма вероятно, что если бы я сидел и кликал по сайту в браузере и накликал за полчаса 500 страниц, то тоже бы увидел капчу.
    Ответ написан
    Комментировать
  • Как перенести объект из JS в другие языки?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не трогая уже заранее кривую реализацию на js, сделать это невозможно. Увы. Хеш может вообще зависеть от движка js и его версии, от аппаратно-програмной платформы, так как структура объекта не факт что одинакова в разных реализациях, что может давать неодиаковые конечные результаты.

    Теоретически, если поборость последнее, то есть неодинаковый результат в разных условиях (путём запуска кода в предсказуемо одинаковых), то можно, например, оформить хеширующий микросервис, который будет получать данные и хешировать их по кривому алгоритму. Но лучше бы, конечно, этой фигнёй не страдать, а исправить изначальную проблему. Это как заболевания генетического происхождения: лечить их практически невозможно, потому что у человека уже миллиарды неверных копий ДНК в организме, которые поздно исправлять.
    Ответ написан
    1 комментарий
  • Как получить имя 2 юзера через ответ на сообщение?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Поле reply_to_message у класса Message содержит информацию о сообщении, на которое отвечают. Ну или None, если это обычное сообщение.
    Ответ написан
    2 комментария
  • Как в си узнать какой пользователь вошёл в систему linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    man getuid
    man getpwuid

    Есть стандартные функции для подобных задач. Их использовать намного правильнее, чем парсить utmp (в который пользователь может не попасть, особенно если это неинтерактивный логин или su/sudo) и /etc/passwd (поскольку пользователи могут храниться не только в passwd, но и в winbind/ldap/nis/итд).
    Ответ написан
    Комментировать
  • Порекомендуйте замену vim?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это решается другим способом. Можно сделать готовый комплект конфигов (не только для vim), который в одну команду заливать на любой новый сервер (например, с помощью ansible). Круче vim всё равно мало что есть (пользуясь случаем, передаю большой привет emacs).
    Ответ написан
    Комментировать
  • Почему возникает: RuntimeError: Task got Future attached to a different loop?

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

    Естественно один event_loop не может ждать таски другого event_loop. Ведь суть asyncio в том, что в одном потоке выполняется event loop и на ожиданиях ввода-вывода происходит переключение между задачами. Если работает один event loop, то другой в это время не может выполняться.
    Ответ написан
    Комментировать
  • Отредактировать текст поста в своем телеграм канале?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Вообще говоря, правильно отслеживать ботом публикации и запоминать id, например, в базу. Но так-то можно найти в клиенте пост, и сделать копирование ссылки на пост в меню, она будет иметь вид:

    https://t.me/my_awesome_channel/message_id

    Bot API не позволяет прочитать историю, боты видят только новые публикации. Если ручной способ не подходит (например, постов слишком много для ручной работы), придётся пилить бота на клиентском MTProto API (telethon, pyrogram).
    Ответ написан
    Комментировать