# Работа с базами

Когда софт обрабатывает различные списки (например список пользователей или чатов), то он оставляет напротив строчек специальные [метки](/misc/spiski-i-metki.md). В этой статье мы рассмотрим различные манипуляции с базами, которые вы можете проделать самостоятельно: например, выделить всех пользователей, которых мы не смогли заинвайтить или которых не удалось найти в телеграме.

## Регулярные выражения

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

## Программы для работы

#### regex101.com

Самый простой вариант - это зайти на сайт [regex101.com](https://regex101.com) и вставить туда базу, с которой собираетесь работать:

<figure><img src="/files/D7QV6F7i8lkDV24N6NnQ" alt="" width="563"><figcaption></figcaption></figure>

Команду для поиска нужно будет вписывать в окошко сверху.

#### Другие программы

Для более удобной и продвинутой работы я рекомендую установить текстовый редактор с поддержкой **regex** себе на компьютер. Тогда вы сможете открывать файлы напрямую со своего компьютера и сразу сохранять нужный результат в другой файл. Например, подойдут редакторы [Sublime Text](https://www.sublimetext.com) или [Notepad++](https://notepad-plus-plus.org/downloads/).

## Пробуем!

Загрузите любую обработанную базу в ваш редактор и напишите такую команду для поиска:&#x20;

{% code fullWidth="false" %}

```
^\s*(\S+) Ok
```

{% endcode %}

Если у вас нет базы под рукой, а посмотреть хочется, то откройте [этот пример](https://regex101.com/r/fA7RKr/1).

Вы увидите, что редактор выделил все строчки с меткой **Ok:**

<figure><img src="/files/JTeLzUMZ2ihtVtPm1sSc" alt="" width="563"><figcaption><p>Скриншот с сайта regex101.com</p></figcaption></figure>

Таким же способом можно выделять строчки по любым правилам! Ниже мы рассмотрим несколько примеров, но ваши возможности безграничны.

## Выгружаем выделенные строчки

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

Если вы используете сайт regex101.com, то после выделения нужны строчек вам нужно нажать сюда:

<figure><img src="/files/SdBTrjfPBt3D9opxgBNq" alt="" width="563"><figcaption></figcaption></figure>

Затем выбрать формат "Простой текст" и нажать кнопку для копирования результата:

<figure><img src="/files/6iOPGzhoYqhtC843IZn7" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
Чтобы выгружать строчки без меток, при экспорте результатов снимите галочку внизу окна:

<img src="/files/Eh0KwxkP0KCcinNZxzMN" alt="" data-size="original">
{% endhint %}

## Пользователи, которых не удалось заинвайтить

Если кого-то из вашей базы не удалось заинвайтить, то можно отправить им оффер в ЛС через модуль [спамера](/modules/private-messages-spam/regular-mode.md). Чтобы выделить всех пользователей, которых не получилось заинвайтить, воспользуйтесь такой командой:

```
^\s*(\S+) CannotInvite
```

## Необработанные строчки

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

```
^\s*\S+\s*$
```

## Не найденные пользователи

А вот команда для выделения всех пользователей, которых софт найти не смог (это может случиться если пользователь сменил юзернейм, его забанили, указанный номер телефона не найден в телеграме и т.д.):

```
^\s*(\S+) NotFound
```

## Строчки с различными метками

Если вас интересуют какие-то другие метки, то вы можете составить команду для поиска самостоятельно.&#x20;

Вот шаблон для выделения всех строчек с определённой меткой:

```
^\s*(\S+) МЕТКА
```

Если меток несколько, то можно перечислить их через символ `|`

```
^\s*(\S+) МЕТКА1|МЕТКА2|МЕТКА3
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.teleraptor.ru/misc/rabota-s-bazami.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
