Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Имеет ли смысл открыть счёт в банке вне РФ для фриланса?

Лучший ответ:
Вы раскрыли слишком мало информации о себе, чтобы дать дельный совет (который, как верно заметили, еще и никто не знает).

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

Но рынок фриланса есть не только на Западе, внутренний рынок тоже большой, и я знаю много людей, которые работают только с российскими клиентами. Конечно, в таком случае открывать счет в Грузии будет глупостью.

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

Худший ответ:
Полно банков в РФ, которых не касаются санкции.
Вопрос: Возможно ли поднять веб-сервер на сером IP?

Лучший ответ:
192.168 - это не серый, а адрес в локальной сети.
Если ты никак не будешь проксиновать на него запросы, то никак до него из интернета не достучаться.

Худший ответ:
временно можно. например, через ngrok. 
на постоянку, без ухищрений - нет.
Вопрос: Не выполгяется последняя часть кода @bot.callback_query_handler(func=lambda call:True) def callback2(call): почему и как исправить?

Лучший ответ:
@bot.callback_query_handler(func=lambda call:True)
func говорит боту, когда вызывать обработчик. Бот вызывает только ОДИН обработчик (первый подходящий).
func=lambda call:True означает, что обработчик должен вызываться для ВСЕХ кнопок.
Научись различать обработчики по call.data. Например, пусть у одной группы кнопок data начинается с "foo.", а у другой  - с "bar.". 
item = types.InlineKeyboardButton('4', callback_data='foo.question1')
item2 = types.InlineKeyboardButton('3', callback_data='foo.question2')
gotov = types.InlineKeyboardButton('Готов', callback_data='bar.gotov')
Тогда ты сможешь прописать два обработчика:
@bot.callback_query_handler(func=lambda call:call.data.startswith('foo.'))
и
@bot.callback_query_handler(func=lambda call:call.data.startswith('bar.'))

Разумеется, вместо foo и bar можно придумать свои префиксы, в том числе многоуровневые (типа callback_data='questions.q1.answer1').

Худший ответ:
У вас два обработчика
@bot.callback_query_handler(func=lambda call:True)
Какой из них должен срабатывать и при каких условиях?

P.S. просто ради интереса - сколько по времени вы изучаете python?
Вопрос: Как сделать рамку в виде продолжения цифры?

Лучший ответ:
Как-то так https://codepen.io/AnnaSummer/pen/wvEJbbq

snippet

Худший ответ:
Как вариант, если без магии с СВГ и прочими:
У блока с цифрой сделать выноску на ПСЕВДОЭЛЕМЕНТЕ и разместить ее ПОВЕРХ бордера.
&:before {
   content: "";
   position: absolute;
   top: 100%;
   left: сколько надо;
   height: 10px или сколько надо;
   width: 20px или сколько надо;
   background-color: #fff; // и это самое узкое место, т.к. измениться фон - будет видена эта выноска
   z-index: 2;
  }
Вопрос: Ссылка из массива на внешнюю переменную?

Лучший ответ:
У вас при инициализации лишнии переменные.
Должно быть просто
$link = [&$one, &$two];

https://onlinephp.io?s=s7EvyCjg5UpJTc5JLErVKC4pykw...

Худший ответ:
У вас при инициализации лишнии переменные.
Должно быть просто
$link = [&$one, &$two];

https://onlinephp.io?s=s7EvyCjg5UpJTc5JLErVKC4pykw...
Вопрос: Можно ли создать сертификат для nginx через openssl чтобы браузер не выдавал ошибку?

Лучший ответ:
Если для локального сервера, то mkcert отлично работает.

Худший ответ:
Всем спасибо. Нашел инфу как правильно сгенерить серт, все заработало!
Вопрос: Почему Rust нужна хэш-функция для реализации объектов, а JS такое не использует?

Лучший ответ:
Вообще объекты в JS - это тоже hashmap, и в этой структуре есть защита от коллизий:
Если вдруг два разных ключа получили один и тот же хеш, то они складываются в одну корзину, и при попытке получить значение по ключу - придётся ещё пройтись по всем парам ключ-значение в этой корзине, чтобы найти нужный ключ, уже используя Eq.

Худший ответ:
Есть здесь хеш таблица. А Map по вашему что такое? Хеш таблица. А про массивы - это массивы являются объектами, а не наоборот :)
Вопрос: Где взять старую сборку Windows 10?

Лучший ответ:
rutracker org
там есть чистые разнообразные образы

Худший ответ:
С билдом ничего не напутал? 19043 это 21Н1 2021 года
А где найти старый версии...
Разве Рутрекер  отменили? Там этого добра полно
Даже билд 10240 от 2015 года сейчас парочку увидел
Да и NoNaMe до сих пор в сети обитает не смотря на постоянные попытки прикрыть
Вопрос: Отвалилось подключение к Гипервизору Esxi, что делать?

Лучший ответ:
Вот когда вместо этого потока сознания выдашь структурированную схему, как организована сеть, где сервер, где ты, причем тут прокси и все такое - может и продскажем. А то может ты вовсе не админ, а школьный-хакИр одиночка :)

Худший ответ:
перебил esxi на новый ip
Ты же сам ответил на свой вопрос. Через ВЕБку поставь старый IP, или в VW подключись по новому IP.
P.S. Только нахрена так всё усложнять? Там виртуалки, тут виртуалки. Через WEB самое толковое управление же...
Вопрос: Как лучше выставлять вешнюю геометрию для блоков bem?

Лучший ответ:
ну если прямо по канонам БЭМ, то любая внешняя геометрия задаются в элементах.
Ваш тайтл является элементом какого-то внешнего блока, вот его и миксуйте.

.block
  .block__title.title

.block__title {
  margin-bottom: 1rem;
}

Худший ответ:
Внешние отступы и позиционирование относительно родительских блоков необходимо делать при помощи модификаторов либо миксов. Модификаторами определяем базовые стили, миксами переопределяем стили в контексте текущего блока.
Вопрос: Как устранить «щелчки» полевика?

Лучший ответ:
UPD: Ответ полностью изменён.
...5 кусков 1мм нихрома запаралеленых, длиной в 5 метров. 
...мне понадобилось около 8 витковИз этих данных следует что ваша труба имеет солидный диаметр, около 200 мм. Похоже, этот ваш нагреватель - это ВЧ-трансформатор с коэффициентом трансформации 8:1, имеет довольно хорошо связанные магнитным потоком обмотки, и поэтому, даже несмотря на отсутствие магнитопровода, имеет неплохую эффективность. Главная его особенность - вторичная обмотка короткозамкнута, т.е. это трансформатор тока. 
Если подключить такой транс к источнику тока 12 вольт через быстродействующий ключ, то в нём можно наблюдать всякие интересные эффекты. Главный из них - это то, что в первое мгновение этот ток будет многократно превышен, и лишь после рассеяния КЗ-тока во вторичной обмотке (т.е. в трубе) ток питания придёт к стационарному значению 7,5 ампер. 

Каким образом этот пик тока может дать звук? Одно из объяснений дал в своём ответе VT100 - щёлкает не нагреватель, а БП, из-за перегрузки по току. Второй вариант ответа даю я - большой ток даёт сильное магнитное поле, из-за чего проявляется магнитострикционный эффект, деформирующий трубу и нихромовую обмотку (кстати, сильное поле заодно объясняет звук при выключении, за счёт накопленной в поле энергии, но вышеописанный процесс идёт в обратную сторону). Можно притянуть за уши и третий вариант - пик тока инициирует всякие резонансные эффекты на частотах, слышимых ухом человека, но тут для проверки надо измерить индуктивность нагревателя, а ещё лучше посмотреть запоминающим осциллоскопом.

Как устранить щелчок? По-моему, это элементарно: надо любым удобным способом устроить плавное нарастание тока. Например, если ваш полевой ключ имеет достаточный (т.е. многократный) запас по току и мощности, то открывать его плавно нарастающим на затворе напряжением (скажем, за 0,1...0,2 сек, этого должно быть достаточно), хотя даже с запасом по току/мощности это потребует установить ключ на радиатор. Можно также пропилить продольный паз в трубе, чтобы вторичный виток перестал быть короткозамкнутым.

Худший ответ:
Сам нихром утоплен в этот герметик намертво.
Тогда - ставлю на то, что при переходном процессе щёлкает сердечник трансформатора или дросселя в БП.
Вопрос: Временная страница сайта?

Лучший ответ:
гуглить: 
Единая точка входа
mod_rewrite
MVC
роутинг

Худший ответ:
нет это делается по другому. 
через .htacces все не существующие на сайте в виде физического файла урлы перенаправляются на единую точку входа.  Часто в качестве нее используют index.php. 
остальные php файлы лежат выше корня www 
При использовании фреймворков  роль index.php в том, чтобы указать пути где он лежит и передать управление его ядру. 

Что именно делать с полученным запросом ответственность роутера.  
Он анализирует урл и вызывает нужный контролер с параметрами.  В качестве их обычно используют сегменты урла.  Роутер так же может заниматься рерайтом запроса по маскам, чтобы привести его к типовому. 
Типовая схема /контролер/метод/парамерт1/параметр2

Контролер подтягивает модели данных. Выбирая нужные значения по указанным параметрам. 
Дальше зовется вьюшка.  (шаблон)

Ну это сильно упрощено. Там есть еге сущности Request Responce Hook и прочее и прочее
Вопрос: Делаю мультиплеер экшен игру. Можно ли все расчёты проводить на сервере, а на клиенте только данные отображать или будет тормозить?

Лучший ответ:
Можно. Фразы для гугления: 

авторитарный игровой сервер
компенсация лагов в мультиплеере
репликация в мультиплеере


Худший ответ:
Не только можно, но и нужно, иначе это огромная дыра для читеров, ведь никто не помешает отправить на сервер нужные мне результаты расчетов.
Вопрос: Как вывести pdoResources с условием?

Лучший ответ:
Для решения Вашей задачи у pdoResources есть параметр &tplWrapper (чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &toSeparatePlaceholders).

[[pdoResources?
    &tpl=`some_tpl`
    &limit=`0`
    &parents=`55`
    &resources=`-[[#[[*id]].parent]]`
    &sortby=`{"menuindex": "ASC"}`
    &tplWrapper=`@INLINE
        <div class="some_block">
            <p class="block_heading">Какой-то заголовок</p>
            <div class="block_items">
                [[+output]]
            </div>
        </div>
    `
]]

Худший ответ:
Можно попробовать через параметр &toPlaceholder, т.е. идея - выводите вместо экрана результат сниппета в плейсхолдер, если он непуст  -выводите весь блок в т.ч. с тем, что сохранили в плейсхолдер. Т.е.
[[pdoResources?
            &tpl=`some_tpl`
            &limit=`0`
            &parents=`55`
            &resources=`-[[#[[*id]].parent]]`
            &sortby=`{"menuindex": "ASC"}`
            &toPlaceholder=`myPlaceholder`
        ]]
и потом
[[+myPlaceholder:notempty=`

<div class="some_block">
    <p class="block_heading">Какой-то заголовок</p>
    <div class="block_items">[[+myPlaceholder]]</div>
</div>

`]]
Вопрос: Нужен способ обойти блокировки VPN?

Лучший ответ:
Используйте Psiphon. Он может подключаться 10 минут, но в конечном счёте подключится.

Худший ответ:
Арендуйте vps
Ставите туда opennvpn с настройкой tcp и 443 портом
99% что всё спокойно заработает

Если только с ПК надо - можно попробовать установку АмнезияВПН, там 3 кнопки нажать

Вариант с RDP тоже можно, развернув его у товарища на ПК, либо арендовав  vps с виндой

Пысы - чет туркменистан зачастил последнее время)) там совсем всё плохо?))

Пысысы - если очень прям нужна помощь - напиши в телегу. Онаж работает наверняка?
Вопрос: Почему не передается изображение на экран?

Лучший ответ:
Нет видеокарты - нет изображения. 

Ваш капитан О.

Худший ответ:
Порты монитора куда подключали от туда и узнавайте и нам напишите, поддерживается ли встроенная графика процессором, и есть ли разъемы на материнской плате под видео выход вообще?
Вопрос: Возможно ли получить ссылку на текущую функцию изнутри функции?

Лучший ответ:
arguments.callee, но это свойство недоступно в strict mode. В частности, в модулях.

Ну, или просто дайте функции имя, чего жадничать-то : )(function toster() {
  console.log(toster);
})();

Худший ответ:
Если код можно поменять, то так:
(function myfunc() {
    console.log(myfunc);
})();
Вопрос: Аналог unset в ООП?

Лучший ответ:
Вы неверно поняли. 
Unset - удаляет переменную 
__destruct выполняется когда все ссылки на переменную освобождены 
<?php

class User {

public $name = "Bankai", $age = 40;

function show(){
echo "$this->name:$this->age <br>\n";
}

function __destruct(){
echo "Деструктор \n";
}
};

$obj = new User();
$obj->show();

$obj2 = $obj;
unset($obj2);
var_dump("__destruct not calling");
unset($obj);
var_dump("__destruct called");
Результат:
Bankai:40 <br>
string(22) "__destruct not calling"
Деструктор 
string(21) "__destruct called"

Освобождение ссылок на переменную не означает вызов деструктора так как ссылка объект может быть еще в других переменных.

Деструктор невозможно переписать в процедурном стиле, это чисто объектное поведение.

Худший ответ:
деструктор это аналог unset()Деструктор — функция, которая вызывается при уничтожении объекта. В ней можно, например, сохранить текущее состояние куда-нибудь. Она будет исполнена при вызове unset().

$fun = function($name1, $age1){
echo "$name1 $age1 <br>";
echo "Деструктор";
};Это не деструктор. Это вывод строки. Никакого отношения unset($fun); (уничтожение значения переменной) к выводу строки и выполнению кода лямбда-функции не имеет.
Вопрос: Как будет выглядеть данный псевдокод в коде на языке Си?

Лучший ответ:
Вижу несколько проблем. Во-первых, проставьте фигурные скобки ко всем циклам. И отступы поставьте аккуратно (открывающая скобка - +отступ, закрывающяя - -отступ). У вас сейчас инструкции, которые вы думаете в цикле - они вне его.

Во-вторых, вот это что такое вообще? return flag=1;

Худший ответ:
Не совсем понял что такое рез X: возврат значения или вывод. Сделал с выводом.

void Sort()
{
    int n;

    printf("Input n: ");
    scanf("%d", &n);

    int* x = (int*)malloc(n * sizeof(int));

    for (int i = 0; i < n; ++i)
    {
        printf("\nInput x[%d] = ", i);
        scanf("%d", (x + i));
    }

    for (int i = 0; i < n - 1; i++)
    {
        char flag = 0;
        for (int j = 0; j < n - i - 1; j++)
        {
            if (x[j] > x[j + 1])
            {
                int p = x[j];
                x[j] = x[j + 1];
                x[j + 1] = p;

                flag = 1;
            }
        }

        if (flag == 0)
            break;
    }

    for (int i = 0; i < n; i++)
    {
        printf("\nElement x[%d]=%d", i, x[i]);
    }

    printf("\n");

    free(x);
}
Вопрос: Как лучше передать файлы с windows на mac os?

Лучший ответ:
Type-c как уже указали не заработает

Лично я бы - расшарил папку на винде в сеть и скопировал бы файлы

Либо установил Filezilla Server и скопировал по ФТП... быстро,удобно,есть докачка

Худший ответ:
Купить переходник с ssd на type c
Вопрос: Возможно ли задать наследование классов JS из конструктора, по условию?

Лучший ответ:
Бредовая идея поперек ООП.
Добавьте в класс член, который будет инициализироваться объектом того или иного класса в конструкторе, и не морочьте себе голову.

Худший ответ:
Шаблон проектирования "фабрика" вам нужен.
Вопрос: Как создать новый словарь, не меняя старый?

Лучший ответ:
rows = self.rows
НО! В тоже время изменяется из self.rows, который является другим списком.
Не является. Твой оператор просто присвоил переменной rows ссылку на тот же самый список, что и self.rows.
Это легко проверить оператором is или сравнением id():
print(rows is self.rows, id(rows) == id(self.rows))  # True True
Более того, если ты только скопируешь сам список:
rows = self.rows.copy()
То всё ещё поймаешь проблемы, так как скопируются ссылки на элементы, а не их значения:
print(rows is self.rows, id(rows) == id(self.rows))  # False False
print(rows[0] is self.rows[0], id(rows[0]) == id(self.rows[0]))  # True True
Тебе нужно сделать глубокую копию (deepcopy). Это можно сделать вручную, так как у тебя всего два уровня вложенности (список-словарь):
rows = [rowdict.copy() for rowdict in self.rows]
Для более глубоких уровней есть функция copy.deepcopy(), но у неё есть свои подводные камни. Цитата:
Two problems often exist with deep copy operations that don’t exist with shallow copy operations:
    Recursive objects (compound objects that, directly or indirectly, contain a reference to themselves) may cause a recursive loop.
    Because deep copy copies everything it may copy too much, such as data which is intended to be shared between copies.


Худший ответ:
Так происходит, потому что присвоение значения переменной rows = self.rows не является дублированием исходного массива. Нужно использовать deepcopy().
Вопрос: Для чего нужен жёлтый провод в вентиляторе/кулере?

Лучший ответ:
Жёлтый - датчик оборотов.
Регулировка скорости вентиляторов с двух- и трёхконтактными разъёмами выполняется за счёт напряжения питания. При стандартных 12В будет максимальная скорость вращения.

Худший ответ:
тахометр
Вопрос: Что делать, если отключат интернет?

Лучший ответ:
Передавать пакеты голубями.

Худший ответ:
Да если Вы обычный житель - никак. Или спутниковый интернет, при том зарубежного провайдера, или сосите лапу. 
Т.к. судя по всему они просто "блокировали" весь инет, и всё...
Вопрос: Защита данных в API?

Лучший ответ:
Здравствуйте, существует проблема защиты данных клиентского приложения передаваемых серверу и обратно. Какая конкретно проблема?

как защитить данные?От кого?

Можно ли использовать HTTPSРазрешаю, можно.

и как это сделатьНа сервере ставите сертификат, в клиенте прописываете урл апи с https.

или же нужно создавать свои модули шифрования под сессии?Если приложение передает критические данные (например банковские транзакции или шпиёнские документы), можно использовать сквозное шифрование с какими-нибудь убердлинными ключами, однако перехват ключей при хэндшейке при атаке митм никто не отменял. Впрочем, как и в случае с хттпс.

Худший ответ:
Обычно два направления атак, от которых нужно защищаться:
1. защита от кражи передаваемых данных провайдером (любым, на пути следования пакетов, например публичный wifi)
2. защита от подмены передаваемых данных, так же провайдером
Для первой задачи нужно шифрование HTTPS, для второй хватит цифровой подписи но при использовании HTTPS это не актуально, так как подменить зашифрованные данные не получится

Клиент должен не игнорировать предупреждения о невалидности цифровой подписи (любят тут люди вместо корректной настройки последних версий openssl отключать контроль curl --insecure).

Есть еще защита от фальсификаций истории действий клиентом и сервисом (как доказать что ты отправил сервису сигнал на покупку и он его принял, а серверу доказать что ты отправлял этот сигнал), это реализуется цифровой подписью, сервер и клиент сначала обмениваются ключами шифрования (или просто солью для хешей) и каждое свое сообщение подписывают, если клиент будет хранить всю коммуникацию, эти цифровые подписи будут доказательством.
Вопрос: Как скрыть приложения на виндовс 11?

Лучший ответ:
Приложения по любому остаются на диске.
Тут все зависит от того как будет проверятся наличие приложений.
Теоретически, если использовать "портабельную" версию приложения, т.е. без установщика, и скопировать приложение в профиль другого пользователя (т.е. приложение должно находится именно в профиле другого пользователя c:\Users\<user name>\...), то без прав администратора из-под учебного пользователя это приложение (файл на диске) будет не видно.

Худший ответ:
всмысле - проверять?))) этож не законно

наверно самый логичный вариант сделать 2 ОС... одну нормальную и одну минимальную для учебы с нужным софтом
Вопрос: Как найти максимальные значения элементов массива?

Лучший ответ:
Самый оптимальный вариант:
import heapq
a = [1, 11, 23, 41]
largest = heapq.nlargest(2, a)   #[23,41]
smallest =heapq.nsmallest(2, a)  #[1,11]

Худший ответ:
a = [1, 11, 23, 41]
a.sort(reverse=True)
print(a[0:2]) # в [] используются срезы
Вопрос: Где хранить корзину гостя в интернет-магазине?

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

Худший ответ:
Самая грамотная по моему следующая стратегия. 
Анонимный пользователь получает в localstorage или в куку свой идентификатор который вечный. 
Дальше приложение считывает этот идентификатор, если он уже есть в базе то товары складываются в бд именно для этого пользователя, если нет то просто в локалстораге. 
После логина все уходит в бд и хранится только там.
Вопрос: Как остановить бесконечный цикл?

Лучший ответ:
Это - популярный вопрос на собеседованиях. 
if (saa == "Please exit")
Обычно в Java строки сравнивают через equals() а данное условие выше может сработать а может и нет :)

Вот когда оно сработает - это тема небольшой лекции по организации памяти.

Худший ответ:
Это - популярный вопрос на собеседованиях. 
if (saa == "Please exit")
Обычно в Java строки сравнивают через equals() а данное условие выше может сработать а может и нет :)

Вот когда оно сработает - это тема небольшой лекции по организации памяти.
Вопрос: На сколько плохо, если в винде будут установлены драйвера на 10 разных пк?

Лучший ответ:
Даже XP могла запуститься с другого железа
7ка уже почти всегда без проблем
с 10й, думаю, проблем ещё меньше

В любом случае: практика - критерий истины. Если будет выпадать в синий экран или не загружаться - то проблема явно есть. Если работает - то и не стоит переживать за это.

Худший ответ:
Винде пофиг. Главное чтобы дрова не конфликтовали.
Вопрос: Как настроить Prettier для Git?

Лучший ответ:
Отформатировать один раз все файлы, закоммитить и придерживаться стайлгайда. Иначе зачем вам вообще prettier?

Худший ответ:
Откройте настройки и введите в поиск Editor: Format On Save
Там либо отключите форматирование при сохранении, либо настройте его, чтобы форматировался не весь файл а только изменённые строки.


Ну либо сделайте рефакторинг проекта отдельным коммитом и договоритесь в команде о соблюдении стиля в дальнейшем.

Вы можете обеспечить единство форматирования в своей команде, создав файл конфигурации Prettier для вашего проекта. После создания такого файла и его добавления в проект вы можете быть уверены, что все члены команды используют одинаковые правила форматирования.
Вопрос: Есть ли смысл писать на go под мобильные платформы?

Лучший ответ:
Можете поделиться мнением, что на ваш взгляд логичнее - использовать го для пет проектов или практичнее будет подучить яп для мобилок?
Практичнее будет лопатой копать, молотком забивать, а плеткой повышать KPI первых двух :)

В любом случае, лучше смотреть на настоящую и потенциальную (будет ли рост?) востребованность технологии (вакансии, заказы на фрилансе) на рынке.

Худший ответ:
Бэк это апи, кто его будет потреблять и как плевать.
Вопрос: Как сделать так чтобы во время изменения значения переменной происходило действие c#?

Лучший ответ:
Делаешь вместо "переменной" свойство и внутри сеттера вызываешь какой-нибудь метод, который будет уведомлять заинтересованных об изменении.

Например вот так:
public class Test {
  private int _someValue;
  public int SomeValue
  {
    get => _someValue;
    set {
      if(value != _someValue) {
        _someValue = value;
        NotifyAboutChange(); // То самое "действие"
      }
    }
  }
}
Про события можешь почитать тут:
https://docs.microsoft.com/ru-ru/dotnet/csharp/lan...

Худший ответ:
Для этого создается событие: оно вызывается тем методом, где используется переменная. Подписчики события получают информацию о текущем значении переменной и выполняют свой код.
Вопрос: Как связать телеграм-бота с кибербезопасностью?

Лучший ответ:
Сделай бота с викториной например.
Можно ещё добавить, например, функцию для проверки надёжности пароля.

Это и пользу хоть какую-то принесёт и по сложности не слишком сложно

Худший ответ:
Бот может тестировать-показывать приватность аккаунта юзера. Показывать юзеру все, что он (этот бот, и, следовательно, другие боты) видит о юзере (имя, телефон, ник, last seen, ...). Чтобы юзер мог поиграться с настройками и проверить потом на боте, как они сработали.