# Бот - 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).