# Бот - main
###### tags: `bot`, `tasks`
Файл реализации - [`run_bot.py`](https://github.com/google/clusterfuzz/blob/master/src/python/bot/startup/run_bot.py)
При запуске виртуалки на ней запускает программа-бот. Задачей бота является выполнение тасков, приходящих к нему. Таски [берутся](https://github.com/google/clusterfuzz/blob/master/src/python/bot/startup/run_bot.py#L79) из различных очередей.
В качестве аргументов передаётся тройка:
- `task_name` - Команда, которую надо выполнить (прим. fuzz)
- `task_argument` - Аргумент команды (прим. имя фаззера)
- `job_name` - Что - то ещё, характерное для таска
Таски могут быть следующих видов:
```python=
COMMAND_MAP = {
'analyze': analyze_task,
'blame': blame_task,
'corpus_pruning': corpus_pruning_task,
'fuzz': fuzz_task,
'impact': impact_task,
'minimize': minimize_task,
'ml_train': ml_train_task,
'progression': progression_task,
'regression': regression_task,
'symbolize': symbolize_task,
'unpack': unpack_task,
'upload_reports': upload_reports_task,
'variant': variant_task,
}
```
Для запуска одного раунда фаззера используется fuzz_task. (Подробнее [здесь](https://hackmd.io/@reverse-clusterfuzz/r1aESmtI8))
Перед выполнением fuzz - таска сервер может поднять локальный http-сервер для манипуляций с тест-кейсами (для blackbox - фаззинга, это не для нас, т.к. у нас libFuzzer).