Pull to refresh

Как бесплатно разослать всем членам ТСЖ персональное сообщение о завтрашней уборке снега через WhatsApp

Level of difficultyEasy
Reading time6 min
Views3.4K

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

Пример двора
Пример двора

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 г.

Tags:
Hubs:
Total votes 5: ↑5 and ↓0+6
Comments28

Articles