Задать вопрос
  • Почему await не переключает коррутины?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    asyncio вообще никак не гарантирует порядок, в котором будут выполняться функции и выполняться переключение на следующую. В этом примере, например, будет запущена a() и ничего про запуск b() не будет ещё известно среде выполнения. Затем будет запущена c(), быстро завершится и завершит a().

    Смысла в таком тесте мало - тут всё очень быстро происходит. Я бы рекомендовал для экспериментов вставить asyncio.sleep в функцию c, чтобы она не завершилась так уж быстро, а также во время этого ожидания гарантировано выбралась бы следующая задача - в данном случае продолжилось выполнение main().
    Ответ написан
  • При наличии в коде @bot.event, @bot.commands не работает(делал на python 3.9). Что делать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Так и должно быть в соответствии с написанным. Вызов bot.process_commands(message) случается только тогда, когда сообщение содержит smetanka_v_dele. Вынеси process_commands из if.
    Ответ написан
    Комментировать
  • Как отправить сообщение сразу всем на Discord сервере в python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    1. Написать сообщение в канал, который доступен всем пользователям. Это наилучшее решение в большинстве случаев. Можно использовать упоминания (@here, @everyone, @роль).

    2. Использовать цикл по списку пользователей. Если сообщения одинаковы, то это не очень хорошее решение. Также не все пользователи могут разрешать приём сообщений от сторонних контактов (готовимся отлваливать исключения). Плюс флудить в ЛС не очень хорошо в принципе, особенно если пользователей много (готовимся делать задержки, чтобы не превышать скорость). Ещё надо обратить внимание на то, что по умолчанию бот не имеет права получать через API список всех пользователей сервера, это надо явным образом включать, см. https://discordpy.readthedocs.io/en/stable/intents.html
    Ответ написан
    7 комментариев
  • Пишет два сообщения вместо одного. Что делать?

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

    if xxx == ('a' or 'b' or 'c'):

    свидетельствует о полном незнании языка Python. Соответственно, не зная языка, ничего хорошего написать не получится. Великое счастье, что этот код хотя бы не управляет ядерными боеголовками. Начинать надо с азов.
    Ответ написан
    2 комментария
  • Как сделать рассылку пользователям Телеграм?

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

    joinedFile.open("D:/бот/joined.txt", 'a')

    (который всё равно выдаст ошибку, потому что у файлового объекта нет метода open) сделать:

    joinedFile = open("D:/бот/joined.txt", 'a')
    Ответ написан
    Комментировать
  • Какая-то проблема с кодом, поможете?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ну так что написано, то он и делает.

    if message.chat.type == 'private':

    Если написали в приват, то в зависимости от сообщения будет тот или иной ответ.

    А если написали не в приват, то код сразу попадает в блок else.

    Прежде чем писать ботов, надо почитать учебник по python. Обязательно! Тогда и не будет таких тривиальных вопросов. Отступы в python очень важны. В этом коде else относится не к if-elif-elif... а к внешнему if.
    Ответ написан
    Комментировать
  • Ошибка в python aiogram телеграмм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Он же пишет прямо, что не так. Запущен где-то второй инстанс бота с тем же токеном, который также дёргает getUpdates.
    Ответ написан
    Комментировать
  • Возможно ли сделать интерфейс для программы на питоне?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если речь о графическом интерфейсе, то смотреть можно в сторону ключевых слов tkinter и pyqt5.

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Андроид в целом открыт, можно начать с изучения https://source.android.com/

    Но всё это настолько сложно будет повторить самому без обширных знаний и большого опыта, что я рекомендую даже не начинать.
    Ответ написан
    7 комментариев
  • Шанс блокировки номера в Whatsapp в CRM?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Да, всё так, WA хочет, чтобы за легальное подключение бизнес платил деньги и подвергался строгой модерации.

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

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    "Ключи" можно задать только для inline-клавиатуры.
    Ответ написан
    Комментировать
  • Как принимать смс программно?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Операторы предоставляют телефонные номера с возможностью приёма входящих по протоколу SMPP. Как федеральные (11-значные), так и короткие. При этом исходящие сообщения (в сторону абонентов) можно отправлять только с коротких, на длинные можно только принимать входящие.

    Но стоит это довольно дорого. Один из операторов брал за федеральный номер 12 тыс. рублей в месяц, насколько помню. Короткие вообще безумно, мне даже страшно представить порядок цен.

    Но подключение по SMPP это лучший вариант с технической точки зрения. Альтернатива - это симка. Или у себя, или у сервиса, который предоставляет номера в аренду (типа sms-activate).
    Ответ написан
    3 комментария
  • Почему Яндекс Карта на сайте смещена по оси Y?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Скорее всего потому что яндекс-карты используют эллиптический меркатор EPSG:3395, а не сферический псевдомеркатор EPSG:3857. Надо добавлять объекты на карту через lat/lon координаты, а если добавляются объекты в целевой системе координат - правильно перепроецировать в нужную.
    Ответ написан
    Комментировать
  • Настройка webhook instagram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что параметры называются hub.challenge, а не hub_challenge; hub.verify_token, а не hub_verify_token.

    Upd: как выяснили, php принудительно меняет точку на подчёркивание. Пока обсуждаем в комментариях.
    Ответ написан
  • Почему не выводится результат в 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 и посмотреть
    Ответ написан
    Комментировать