Задать вопрос
  • Как отправлять самому себе сообщения через бота телеграм?

    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 с ГОСТ-шифрованием...

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Смотреть в сторону утилит типа cmdow.
    Ответ написан
    Комментировать
  • Как узнать id только что отправленного ботом telegram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В чём проблема? Метод API sendMessage возвращает id отправленного сообщения.
    Ответ написан
  • Каким образом узлы в p2p сетях обходят NAT?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Да, конечно, возможно.

    Часть сети имеет внешние IP и позволяет прямой коннект к ним. При простейшей реализации p2p коннект возможен только между участниками при условии наличия у одного из них внешнего IP. Если узел А хочет установить коннект с узлом Б без внешнего IP (с закрытым портом и прочее, то что в ed2k называлось LowId, в DC - passive mode - и всё такое подобное), то надо, чтобы Б получил информацию об А и установил с ним коннект сам.

    Например, в ed2k клиент с полноценным внешним IP и возможностью коннекта к нему получает HighId, одинаковый на всех серверах, а неполноценный клиент получает непостоянный уникальный в пределах сервера LowId. Чтобы установить коннект между собой, клиенты А и Б должны находиться на одном сервере, а дальше А просит сервер передать Б просьбу установить коннект. Совсем бессерверно (используя DHT) ed2k может работать только с HighId-клиентами.

    В некоторых сетях также поддерживается передача через посредников, в этом случае можно устроить обмен данными между любыми участниками сети. Иногда даже посредники обязательны, чтобы исключить прямую передачу данных и тем самым замаскировать реальные адреса участников сети.

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Смотрю предыдущий вопрос: Что учить для работы в сфере IoT?

    Судя по всему, мы имеем обычный случай "найти себя" в какой-нибудь области. Но если по IoT нужны знания больше инженерно-технические, то в ML нужна настоящая теоретическая подготовка по математике. Если всё же очень хочется - начинать можно с любого вузовского учебника по линейной алгебре.
    Ответ написан