yxtiblin, потому что gather ждёт завершения функции. Если делать gather на каждую функцию, то ясен пень они будут работать по очереди. Надо вызвать gather на список всех запущенных клиентов.
Это не очень тривиальная задача. Для самого простейшего решения границы слов должны быть достаточно отчётливыми паузами, не перекрываемыми слишком громким фоновым шумом. А по-настоящему хорошее решение с удовольствием купит множество крупных транснациональных корпораций.
Anton Miroshnikov, метод download_file возвращает имя файла, а не его содержимое. Неудивительно, что это строка, а не бинарные байты. Сохранять имя файла в другой файл вообще странная затея.
Также пользователи могут блокировать поиск их по номеру телефона.
До кучи, можно реально получить много жалоб, а уж отписка недовольных будет обычным делом.
Правильно использовать другие уже одобренные получателями каналы (например, почта) для предложения вот подписаться ещё и на канал. В том числе в виде, например, ссылки в подписи уже отправляемых писем, а не отправки отдельного письма. А добавление юзеров в канал без их согласия - это чистый спам.
FRATEREH, в любом языке есть возможности для решения подобных задач. Можно сделать несколько отдельных запросов (в том числе в цикле), данные можно собирать в массивы, можно подставлять в параметры других запросов, можно частично или полностью сохранять в базу, в файл, можно показывать пользователю итд итп. Но всё это достигается не без(д)умным склеиванием случайных кусков кода из интернетов, а освоением языка, начиная с самых азов.
moriokii, тут нужно делать что-то типа читов для CS, которые загружали в игру модифицированные DLL и в дополненние к обычной графике рисовали рамочку вокруг противника за стеной. Тут надо будет выяснить, что и где проихсодит в игре и внедриться в неё, чтобы получать и внедрять данные. При этом сложность игры может быть такой, что на ковыряние в её недрах могут уйти не просто месяцы, а годы (с неясными шансами на успех). Также иногда бывают игры, которые официально имеют инструменты для модификации и интерфейсы для внедрения дополнительных функций, но это достаточно редкая вещь в мире игр.
В каком-то смысле у игры всегда есть исходный код. Только он написан на языке "машинные коды процессора x86". И эти исходники изучать будет намного тяжелее, чем исходный код на высокоуровневом языке.
Для личного развития лучше выбрать какую-нибудь другую задачу, попроще и с более предсказуемыми шансами на успех.
alokey, смотреть в сторону string.format, а если надо просто конкатенацию - это две точки: "123".."456" = "123456". Язык очень простой, лучше сразу смотреть в документацию, в конце концов, можно погуглить.
goshaLoonny, есть куча игр, где именно невозможно достичь. Например, в игре недельный ивент, где, например, можно сделать 10 атак в сутки и получить по 10 очков при полностью успешной атаке. Итого в сутки 100 очков, за весь ивент 700 очков. Разумеется, в топе 100 человек с 2100 очков, потому что они купили пакет на +10 атак в сутки и +50% очков за атаку. Как хорошо ни играй, а обойти их не сможешь. И подобное сейчас во многих играх норма.
Я думаю, в данном случае FatherBot это не реальный https://t.me/BotFather (именно так правильно), а какой-то конструктор, там в поиске есть пачка странных личностей с таким названием.
Alexander Kalinin, я пользуюсь, он нативно работает в моём линуксе и в fuse-клиентах, из которых я предпочитаю jmtpfs. Использовать adb push/pull для обмена файлами это сюр какой-то.
Александр, я на микротике кроме wireguard ничего не настраивал. На Linux настраивал gre (с ipsec и без), ipip не пробовал, не было нужды, может в нём какой-то mtu autodiscovery предусматривается?
Обычно ipsec всё же используют с gre. Возможно, просто по причине поддержки всякими цисками.