## Зачем мне понадобился бот (это не про бизнес) У меня была задача, которую я делала каждый понедельник вручную: 40 минут сверки таблицы с графиком, отправка пяти сообщений двум контрагентам, копирование чисел в три места. Скучно, монотонно, легко ошибиться. Я решила один раз написать скрипт, чтобы больше этим не заниматься. Бот не для клиента, не для продажи. Для себя. Поэтому и «за выходные» — без дедлайнов, без заказчика, без согласований. ## Архитектура: что заняло два часа, а что — два дня Я разбила проект на пять частей: получить данные из таблицы, сформировать сводку, отправить в мессенджер, настроить расписание, добавить обработку ошибок. Первые четыре части заняли два с половиной часа. Пятая — два дня. Не потому что логирование сложное, а потому что я впервые задумалась, что будет, когда что-то сломается в продакшене, и не при ком. До этого все мои скрипты работали в моём присутствии — я их запускала, я смотрела, я чинила. Тут — некому смотреть. ## 3 ошибки, которые я сделала в первые сутки **Первая — не подумала про токены.** Бот работает от имени приложения, а не пользователя. Когда я впервые отправила тестовое сообщение, оно ушло не в мой мессенджер, а в чужой — потому что я перепутала два токена в одной переменной окружения. Потратила час на отладку, прежде чем нашла. **Вторая — обработка ошибок была try/except без уведомления.** Я привыкла, что в личных скриптах ошибка означает «остановись и спроси меня». Здесь мне спросить некого. Бот в понедельник утром отправил молчаливый сбой, таблица не обновилась, и я узнала об этом через неделю, когда цифра разошлась. **Третья — логирование в файл, который я не смотрю.** Записать в файл легко. Читать его регулярно — отдельная привычка. Первая неделя прошла без чтения логов, потому что «всё работает». ## Как бот впервые ответил живому человеку В понедельник утром я запустила первый прогон по расписанию. Сообщение ушло. Адресат открыл чат, прочитал, ответил: «Спасибо, всё верно». Бот ему не ответил. Я ответила. Это был первый момент, когда скрипт повлиял на чужой процесс без моего участия. Что я поняла в ту секунду: у скрипта есть аудитория, даже если он не публичный. И эта аудитория ожидает не просто данных, а поведения. Если бот вовремя прислал — на него можно полагаться. Если один раз промолчал — всё доверие обнулилось. Я переделала архитектуру так, чтобы бот писал мне в личку, когда что-то не так. Теперь у меня два канала: основной — адресату, сервисный — мне, в режиме «только если сломалось». ## Что бы я переделала сейчас, через две недели За 14 дней эксплуатации у меня список из четырёх правок: 1. Расписание — не «раз в неделю», а «каждый понедельник до 9:00, иначе ругай меня». Расписание должно быть настойчивым, иначе легко сказать себе «потом добавлю». 2. Тестовый прогон перед каждым боевым. Сначала сухой режим — логирует, но не отправляет, потом боевой. Это добавило мне уверенности. 3. Версия скрипта в каждом сообщении. Внизу каждого ответа бота теперь стоит «версия 1.3». Мелочь, но если адресат видит странное поведение, я сразу знаю, какую версию смотреть. 4. Резервное копирование таблицы перед обработкой. Один раз скрипт перезаписал шапку таблицы по неверному ключу — восстанавливала вручную. Теперь перед обработкой сохраняется копия. ## Применимо не к боту, а к любому проекту на выходные Урок не про мессенджеры. Урок про момент, когда ваш код впервые влияет на чужой процесс без вашего присутствия. Это случается с любой автоматизацией: отчёты по расписанию, рассылки клиентам, обновления витрины, обновления в таск-трекере. Код становится «сотрудником», а не «инструментом». Что я вынесла: - Перед запуском в бой — задайте вопрос «кто заметит, если оно сломается, и за сколько». - Если ответ «никто» — добавьте канал уведомлений для себя. - Если ответ «адресат через неделю» — это слишком поздно, нужен второй канал. - Логирование — это не «добавим потом», это часть продукта. Если вы давно хотели автоматизировать свою понедельную рутину — попробуйте. Самый дешёвый способ понять, где грабли, — написать за выходные и запустить в понедельник.