Задать вопрос
  • Как постоянно обновлять данные запрашиваемы с google spreadsheet для телеграм бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Например, сделать загрузку данных отдельной функцией и запоминать время последнего скачивания. Если в момент вызова send_text текущее время превышает время последнего скачивания больше чем на определённую величину (5 минут, 1 час - насколько часто надо обновлять данные?), то вызвать функцию скачивания ещё раз и обновить переменную с временем последнего скачивания.
    Ответ написан
  • Как с помощью бота запросить разрешение на получение контактов пользователя?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно отправить кнопку с request_contact=True, пример есть тут
    Ответ написан
    Комментировать
  • Python как вывести динамический текст?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Как-то так:
    import time
      
    def progressbar(size=10):
      for i in range(size+1):
        bar = "|"*i+"."*(size-i)
        print (f"\r[{bar}]", end='')
        time.sleep(1)
      print ()
    
    progressbar()
    Ответ написан
    Комментировать
  • Как ловить ботом сообщения из телеграм канала?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак, бот не имеет доступа к сообщениям в каналах. Можно использовать MTproto API (клиентское) для таких задач.

    upd: это оказалось неверно, как обсудили в комментариях. Но следует учесть, что в том же telebot вместо @bot.message_handler следует использовать @bot.channel_post_handler
    Ответ написан
  • Как отправлять самому себе сообщения через бота телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ошибку, вообще-то надо показывать, кто ж будет решать то не знаю что?

    Но давай я повангую.

    Во-первых, Bot - это класс. Нужно создать его экземпляр:

    from aiogram import Bot
    bot = Bot(token=config.bot_token)


    Во-вторых, при этом всё равно будет ошибка coroutine was never awaited. Потому что асинхронные функции нельзя просто так вызывать из синхронного кода.

    Вызвать можно так:

    async def main():
      await bot.send_message(my_chat_id, my_message)
      await bot.close()
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    Ответ написан
    Комментировать
  • Получится ли сохранить файлы в торрентах или IPFS, на десять лет?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не сработает. Даже востребованным у пользователей старым раздачам на том же рутрекере уже требуется поддержка со стороны группы хранителей, а чужие непонятные файлы вообще никто никогда хранить не будет. Ну и нужно понимать, что место под хранение данных - оно по определению не бесплатное. Поэтому мечты о том, что кто-то будет просто так, по доброте душевной, хранить твои гигабайты, крайне наивны.
    Ответ написан
  • Законна ли Viber рассылка?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Размещение пользователем своего номера на "доске объявлений" не означает согласие на получение рекламной информации даже от самой доски объявлений, не говоря уже о рекламе от третьих лиц и организаций.

    Более того, автоматизированный сбор номеров для рекламы абсолютно из любого источника незаконен в принципе. Необходимо получить именно личное согласие пользователя на получение рекламы именно от конкретной организации на конкретный номер телефона пользователя. Например, такого согласия некоторые торговые сети и прочий ритейл добиваются, подписывая с пользователем соглашение о какой-нибудь клубной карточке с накопительными баллами, в нём может быть пункт о согласии на получение информации о разного рода акциях на телефон пользователя или даже явно указано, что в мессенджеры.

    Добавлю, что если речь идёт о сервисе Viber Business Messages, то там и формально такая реклама запрещена, и рассылка по случайно собранным номерам сама по себе гарантированно и очень быстро приводит к превышению порога 5% жалоб, по которому сервис сразу же банят. Например, один такой бизнес сразу достиг 80% блокировок, после долгих переговоров и клятвенных обещаний его разбанили, но до повторного бана сервис прожил недолго.
    Ответ написан
    Комментировать
  • Проблемы с запуском бота на Windows 7?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Скорее всего установлен не тот телебот.

    pip uninstall telebot
    pip install pytelegrambotapi
    Ответ написан
    Комментировать
  • Как сделать реплай в общем чате телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    bot.send_message(message.chat.id, "Цитирую!", reply_to_message_id=message.message_id)
    Ответ написан
    3 комментария
  • Почему get_user() возвращает None?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно включить members intents https://discordpy.readthedocs.io/en/latest/intents.html
    И в настройках бота в dev portal разрешить privileged intents.
    Ответ написан
    Комментировать
  • Как отправить сообщение telegram, viber, whatsapp - без ботов? PHP?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Тут этот вопрос регулярно задают.

    Telegram - никак, вообще. Пусть нужные пользователи подпишутся на бота, а дальше им по user id можно слать.

    Viber - платно и довольно дорого через Viber Business Messages, цена одного сообщения не меньше чем смс, плюс минимальный ежемесячный платёж довольно большой. Доступ только бизнесам. Точно так же проще сделать бота и слать по id.

    WhatsApp - тут никаких бесплатных ботов легально не предусмотрено вообще, зато можно по номеру телефона тоже довольно дорого через множество посредников. Опять же, только бизнесам. В основном это продают тоже с обязательным минимальным платежом, но тут хотя бы у некоторых (у того же twilio) есть тарифы без абонентки, с оплатой за каждое сообщение. Ещё можно рисковать нелегальными методами через эмуляцию WhatsApp Web.
    Ответ написан
    7 комментариев
  • Что я упускаю при руссификации консоли?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В отличие от Debian, в Ubuntu файлы локализации вынесены в отдельный пакет language-pack-ru, установка которого решает проблему.
    Ответ написан
    Комментировать
  • Как открыть nano программно?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для go подсказали выше (exec.Command)

    Для python - os.system.
    Ответ написан
  • Как получить список всех членов канала(Discord.py)?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно включить members intent.

    import discord
    intents = discord.Intents.default()
    intents.members = True
    
    client = discord.Client(intents=intents)
    # или
    # bot = commands.Bot(command_prefix='!', intents=intents)


    Также в Dev. Portal включить Privileged Intents для своего бота.

    Документация
    Ответ написан
    3 комментария
  • Как сделать Post запрос в lua?

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

    local http = require "socket.http"
    local ltn12 = require "ltn12"
    
    local reqbody = "{post body}"
    local respbody = {} -- for the response body
    
    local result, respcode, respheaders, respstatus = http.request {
        method = "POST",
        url = "https://httpbin.org/post",
        source = ltn12.source.string(reqbody),
        headers = {
            ["content-type"] = "text/plain",
            ["content-length"] = tostring(#reqbody)
        },
        sink = ltn12.sink.table(respbody)
    }
    -- get body as string by concatenating table filled by sink
    respbody = table.concat(respbody)
    
    print (result)
    print (respcode)
    print (respheaders)
    print (respstatus)
    print (respbody)
    Ответ написан
    4 комментария
  • Почему не удаётся очистить папку через os.remove?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    os.rmdir('photo')

    os.remove не работает с каталогами.
    Ответ написан
  • Каким способом блокирует Роскомнадзор?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Роскомнадзор сам ничего не блокирует, это регулятор, а не технический исполнитель. Его уровень - бумажка написаль.

    Вся работа РКН заключается включение некоторой строчки в некоторый список, регулярно эта строчка даже нормально не парсится (большой привет http:\\), но провайдеров обязуют "всёзаблакиравать", они как-то интерпретируют этот список и как-то пытаются сделать невозможным доступ к хостам из него. У каждого свой метод для этого. Кто-то блочит полученные по DNS все IP из списка или подменяет их IP на IP заглушки, кто-то отвечает RST на любой трафик в эти IP, кто-то пытается подсовывать свой левый https-сертификат на заблокированные сайты, плюс множество местных особенностей, вариаций итд итп.
    Ответ написан
  • Не работает код, ошибок нет, что делать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В этом коде выполняется bot, а client не используется.

    У commands.Bot есть примерно все те же методы и свойства, что у discord.Client. Для начала надо @client.event заменить на @bot.event.

    Далее, известная проблема заключается в том, что собственный обработчик on_message мешает выполняться командам, это настолько популярная проблема, что в официальном FAQ идёт первым же пунктом: https://discordpy.readthedocs.io/en/latest/faq.htm...

    Функции лучше не называть русскими буквами и тем более не надо вставлять туда звёздочки. Команды можно называть с помощью параметра name, чтобы они отличались от названия функции:

    @bot.command(name='пнуть')
    async def kick(ctx, nick):
    Ответ написан
  • Можно ли взломать шифр Вижнера который был зашифрован Аффинным шифром?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Главная ошибка тут - в предположении, что аффинный шифр что-то усложнит. Нет, это не так. По сути шифр остаётся шифром Виженера, в котором просто изменяется ключевое слово на другое. А дальше брутфорсом пробовать разные ключевые слова, проверяя результат расшифровки на похожесть на реальный текст (к примеру, по факту наличия словарных слов).

    Вся беда подобного подхода в том, что количество перебираемых вариантов не очень велико (по меркам современного компьютера), плюс вычислительная сложность ниже плинтуса. Поэтому перебор тут будет невероятно эффективнее работать, чем в вычислительно сложных шифрах типа RSA.
    Ответ написан
  • Как лучше сделать?

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

    Скажем, в одном файле функции работы с базой, в другом - рендеринг графика распределения показателей, в третьем - модуль запросов к API с ГОСТ-шифрованием...

    Аналогично, не должно быть задачи раскладывания файлов по каталогам по количеству. Можно посмотреть на реальные проекты, как в них всё делится.
    Ответ написан
    Комментировать