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

WhatsApp выглядит привлекательным способом оповещения. К примеру, в нашем ТСЖ недавно создали WhatsApp-группу и предполагается что WhatsApp есть у всех жителей. А ещё бывают люди, подключающие домовой чат в качестве эпизодического развлечения: отключают для него уведомления и просто копят непрочитанные.
Хотя скрипт полностью рабочий и протестированный, он ещё не был опробован в реальной жизни при рассылке сообщений - когда я подошёл с таким предложением к нашему председателю, то он не особо впечатлился, предпочтя более привычный обзвон.
Установка и настройка
Чтобы настроить автоматическую рассылку сообщений, нужно подготовить рабочую среду. Это не займет много времени, даже если вы раньше не занимались программированием.
Первым шагом является установка Node.js - инструмента, который позволяет запускать JavaScript-код на компьютере. Без него скрипт попросту не заработает. Перейдите на официальный сайт Node.js, скачайте рекомендованную версию (LTS) и установите её, следуя подсказкам на экране. Убедиться, что всё установлено правильно, можно, открыв терминал и введя команду node -v
. Она покажет текущую версию Node.js.

Следующий важный элемент — библиотека whatsapp-web.js. Она обеспечивает взаимодействие с веб-версией WhatsApp, позволяя автоматически отправлять сообщения. Это основной инструмент, который делает весь процесс рассылки возможным.
Помимо этого, мы будем использовать библиотеку qrcode-terminal, чтобы вывести QR-код прямо в консоли. Он потребуется для подключения вашего аккаунта WhatsApp к скрипту. Это быстрое и удобное решение, чтобы не прибегать к сложным настройкам.
Для обработки списка номеров жильцов пригодится библиотека xlsx. Она позволяет читать и работать с Excel-файлами, из которых скрипт будет брать контакты для рассылки. Это значительно упрощает подготовку данных и исключает необходимость вручную переносить номера.
Соблюдение лимитов для предотвращения бана аккаунта
Автоматическая рассылка сообщений через WhatsApp — отличное решение, но важно помнить о существующих ограничениях, чтобы избежать блокировки аккаунта. WhatsApp внимательно отслеживает подозрительную активность, и массовая рассылка может быть воспринята как нарушение правил.

Ключевое ограничение — суточный лимит на количество отправленных сообщений. С одного аккаунта нельзя отправить больше 1000 сообщений в день (у меня нет официальной информации на этот счёт). Но для ТСЖ это не должно стать проблемой, ведь даже при большом количестве жильцов обычно достаточно 200-300 сообщений.
Еще один важный момент - скорость отправки. Если отправлять сообщения слишком быстро, система может заподозрить неестественное поведение. Рекомендуется не превышать 5-15 сообщений в минуту. Для этого в скрипте можно встроить задержки между отправками, чтобы рассылка выглядела максимально естественно.
Также стоит позаботиться об уникальности текста сообщений. Если отправлять однотипные фразы, это может вызвать подозрения у алгоритмов WhatsApp. Добавление персонализации - например, имени, отчества или информации о марке машины — делает сообщения индивидуальными.
Простое сообщение вроде «Уважаемый(ая) ${person.Name},
завтра будет проводиться уборка снега с 9:00 до 15:00. Просим вас заранее убрать автомобиль ${person.Car || ' '} с парковки, чтобы работа прошла быстро и качественно.
Спасибо за понимание!
» выглядит естественнее и снижает риск блокировки.
Соблюдение этих правил поможет использовать WhatsApp для рассылок без риска потери доступа к аккаунту.
Сам скрипт рассылки всем членам ТСЖ сообщений о завтрашней уборке снега через WhatsApp
Для организации автоматической рассылки сообщений через WhatsApp потребуется выполнить несколько шагов. Первым делом нужно установить необходимые зависимости. Используйте команду npm install whatsapp-web.js xlsx qrcode-terminal
. Она загрузит библиотеку для работы с WhatsApp, модуль для работы с Excel-файлами и генератор QR-кодов.
Затем нужно подготовить список контактов в формате Excel. Файл должен включать три обязательные колонки: Name
(имя), Phone number
(номер телефона) и Car
(марка автомобиля). Убедитесь, что данные заполнены корректно, так как скрипт будет использовать их для отправки сообщений.
Следующий этап — редактирование шаблона сообщений. Код уже включает базовый текст, например:
Уважаемый(ая) Иван Иванович,
Завтра будет проводиться уборка снега с 9:00 до 15:00.
Просим вас заранее убрать автомобиль Toyota Camry с парковки, чтобы работа прошла быстро и качественно.
Спасибо за понимание!
Подключение WhatsApp осуществляется через QR-код. После запуска скрипта на экране появится QR-код, который необходимо отсканировать через приложение WhatsApp. Это позволит синхронизировать аккаунт со скриптом. Важно учитывать, что для рассылки лучше использовать аккаунт, который не жалко потерять, чтобы избежать рисков, связанных с возможной блокировкой.

После настройки можно запускать программу, и она автоматически отправит всем жильцам персонализированные уведомления с учетом задержек между отправками. Это обеспечит соблюдение лимитов WhatsApp и сделает процесс оповещения быстрым и удобным.
/**
* Система автоматических уведомлений через WhatsApp для ТСЖ и УК
*
* Данный скрипт загружает список жильцов из Excel-файла и отправляет им сообщения через WhatsApp.
* Используется библиотека whatsapp-web.js для взаимодействия с WhatsApp Web.
*
* Подготовка окружения *
* 1. Установите Node.js:
* - Скачайте LTS версию с официального сайта nodejs.org
* - Проверьте установку командой: `node -v`
*
* 2. Установите необходимые библиотеки:
* npm install whatsapp-web.js xlsx qrcode-terminal
*
* Подготовка данных *
* Создайте Excel-файл `TSZH.xlsx` со следующими колонками:
* - Name (Имя жильца)
* - Phone number (Номер телефона)
* - Car (Марка автомобиля, опционально)
*
* Подробнее о скрипте: https://habr.com/ru/articles/876216/
*
*/
// Импорт необходимых библиотек
const { Client, LocalAuth } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');
const xlsx = require('xlsx');
const path = require('path');
// Путь к Excel-файлу с данными
const excelFilePath = path.join(__dirname, 'TSZH.xlsx');
// Читаем данные из Excel-файла
console.log("Чтение данных из Excel-файла...");
const workbook = xlsx.readFile(excelFilePath);
const sheetName = workbook.SheetNames[0];
const data = xlsx.utils.sheet_to_json(workbook.Sheets[sheetName]);
// Вывод данных в консоль сразу после чтения
console.log("Данные из Excel-файла:", data);
// Настройка клиента WhatsApp
console.log("Инициализация клиента WhatsApp...");
const client = new Client({
authStrategy: new LocalAuth()
});
// Генерация QR-кода
client.on('qr', qr => {
console.log("Сканируйте этот QR-код в приложении WhatsApp:");
qrcode.generate(qr, { small: true });
});
// Когда клиент готов
client.on('ready', async () => {
console.log("Клиент WhatsApp готов к отправке сообщений.");
// Функция для отправки сообщения с задержкой
const sendMessageWithDelay = async (person, delay) => {
return new Promise(resolve => {
setTimeout(async () => {
// Проверка наличия имени и номера телефона, чтобы избежать ошибок
if (!person.Name || !person['Phone number']) {
console.error(`Ошибка: Отсутствует имя или номер телефона для записи:`, person);
return resolve(); // Переходим к следующей записи
}
// Преобразуем номер телефона в строку, если он число
let phoneNumber = person['Phone number'];
if (typeof phoneNumber === 'number') {
phoneNumber = String(phoneNumber);
}
// Удаляем все нецифровые символы из номера и добавляем суффикс WhatsApp
phoneNumber = phoneNumber.replace(/\D/g, '') + '@c.us';
const message = `Уважаемый(ая) ${person.Name},
Завтра будет проводиться уборка снега с 9:00 до 18:00. Просим вас заранее убрать автомобиль ${person.Car || ' '} с парковки, чтобы работа прошла быстро и качественно.
Спасибо за понимание!`;
try {
await client.sendMessage(phoneNumber, message);
console.log(`Сообщение успешно отправлено на номер ${person['Phone number']}.`);
} catch (err) {
console.error(`Ошибка при отправке сообщения на номер ${person['Phone number']}:`, err);
}
resolve();
}, delay);
});
};
// Персонализированная рассылка сообщений с задержкой
for (let i = 0; i < data.length; i++) {
// Задержка 4 секунды между сообщениями (15 сообщений в минуту)
await sendMessageWithDelay(data[i], i * 4000);
}
});
// Обработка ошибок
client.on('auth_failure', () => {
console.error("Ошибка авторизации. Проверьте свои учетные данные.");
});
client.on('disconnected', () => {
console.log("Клиент WhatsApp был отключен.");
});
// Запуск клиента
client.initialize();
Завершение работы и проверка отправки
Чтобы убедиться, что сообщения успешно отправлены, можно использовать два способа. Во-первых, обратите внимание на логи в консоли. Программа выводит подробную информацию о процессе отправки: номера телефонов, текст сообщения и возможные ошибки. Если возникли проблемы, лог поможет понять, на каком этапе произошел сбой. Во-вторых, выполните ручную проверку. Зайдите в WhatsApp на подключённом аккаунте и убедитесь, что сообщения действительно отправлены указанным получателям.
Задел на будущее
В перспективе скрипт можно расширить, добавив более сложные сценарии: опросы, напоминания или уведомления об авариях. Такой подход позволит сделать общение с жильцами удобнее и эффективнее.
Заключение
Использование WhatsApp для автоматической рассылки сообщений в ТСЖ - это бесплатное, быстрое и удобное решение. Даже начинающий пользователь легко настроит скрипт благодаря понятным библиотекам и простому коду.
Однако стоит учитывать риски. Массовая рассылка может привести к блокировке аккаунта, поэтому начните с небольших списков и внимательно следите за скоростью отправки.
Попробуйте предложить эту систему в своём ТСЖ уже сегодня и оцените, насколько чище будет ваш двор!
Автор: Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»
10 февраля 2025 г.