Этот бот не идеален, и есть некоторые недочеты. Если есть какие-либо предложения или дополнения, с удовольствием обсужу.
Нельзя регистрировать бота на личную симку, не ровен час, политика Whatsapp на данный момент не разрешает создавать полностью автоматизированную систему общения с клиентами и ведет охоту на таких ботов.
| Название файла | Содержание файла |
|---|---|
| tables_in_DB.sql | SQL-скрипт для создания таблицы AuthorizedUsers |
| run.py | Основной запускаемый файл |
| config.ini | Конфигурационный файл модуля |
| ru.ini | Словарь с ответами бота на русском языке |
| en.ini | Словарь с ответами бота на английском языке |
- AutorizedUsers - таблица с ID авторизованных пользователей, у которых есть право на взаимодействие с ним.
"id" (primary key),
"user_id" (номер телефона пользователя),
"language" (язык пользователя).
├── config.ini - основной конфигурационный файл
├── en.ini - сообщения для пользователя на английском
├── ru.ini - сообщения для пользователя на русском языке
├── run.py - основной запускаемый файл
└── objects
├── __init__.py
├── basic.py - файл в котором содержатся небольшие функции
├── database.py - объект базы данных со вссеми возможными манипуляциями с данными
├── db.py - клон предыдущего файла нужен для нормальной работы user_language.py
├── main_layer.py - основная логика бота
├── user_language.py - объект, выбирающий на каком языке общаться с пользователем
└── wa_downloader.py - загрузчик файлов присланных через интерфейс whatsapp
- Клонировать репозиторий
- Настройка сети для докер контейнера, предоставит ему доступ в интернет
- Выбать где будут сохраняться логи и присланные файлы, по умолчанию в Linux системе это папка
/whatsapp_bot/whatsapp_bot/users- папка, где будут храниться конфигурационные файлыconfig.jsonи.db- они нужны для корректной работы библиотеки Yowsup/whatsapp_bot/files- папка, где будут хранится документы пользователей/whatsapp_bot/logs- логи
- Выбрать базу данных с которой будем взаимодействовать в проекте используется библиотека
mysql-connector-python, лучше использоватьMySQL - С помощью файла
tables_in_DB.sqlсоздать таблицуAuthorizedUsers - В файле
config.iniпрописать доступ к созданной БД - В файле
docker-composeуказать переменные:phone_number- номер телефона в формате 7xxxxxxxxxxoperator_code- код оператораanswer_type- тип ответа:sms(придет смс с кодом валидации) илиvoice(звонок, в котором, на английском продиктуют код валидации)
- Если ранее не взаимодествовали с библиотекой Yowsup, то сначала зарегистрировать симку.
- После того как настройка прошла корректно -
docker-compose up
В файле run.py, YowsupEchoStack собирает бот из модуля main_layer.py в котором находится вся исполняемая логика
создает пулл потоков и на каждое входящее сообщение создается отдельный поток. Есть два вида обработчиков входящих сообщений
текстовые и мультимедиа:
- Текстовый
отвечает на сообщения пользователя
- Мультимедиа
Скачивает файлы в папку пользователя \
Для регистрации нового номера телефона надо:
-
Установить симку в телефон
-
Зарегистрироваться в Whatsapp на телефоне и отослать несколько сообщений кому-то в чатик и получить ответы.
-
Потом пройти регистрацию в программе
yowsup(если первые 2 шага пропустить, yowsup не сможет зарегистрировать симку, или сервера Whatsapp забанят номер телефона!) -
В файле
docker-composeзаписать переменные:phone_number- номер телефонаoperator_code- код оператора- 01 — МТС
- 02 — мегафон
- 20 — теле2
- 99 — билайн
- в ответ будет выслан код подтверждения можно выбрать каким образом либо смс, либо автоматизированный звонок от Whatsapp
answer_type- Подтверждение номера телефона по смс(sms) или звонок (voice)
-
Запустить контейнер командой:
docker build -t wabot_work . && docker-compose run --rm wabot_work -r- Консоль будет дожидаться внесения кода в формате
xxx-xxx - При успешной регистрации выведется подобный ответ:
{ "__version__": 1, "cc": "91", "client_static_keypair": "4LwtAptoy3o7RvZKi4/8**************+8O/1YzTqcWU78M/DK1cDap104G243EkySxN7eQ==", "expid": "qsufBg*******GpQV8zNTFg==", "fdid": "6a92d996-0c31-****-8bc1-6c8e12990dc8", "id": "Sow6yYuOVyGQ******vjVhwiMds=", "login": "7**********", "mcc": "250", "mnc": "01", "phone": "7**********", "sim_mcc": "000", "sim_mnc": "000" } - проверить папку
~/.config/yowsup/в ней должна быть папка с зарегистрированным номером телефона - После этого можно запускать постоянный контейнер командой
docker-compose up - Так же можно установить Yowsup библиотеку на комп и вести разработку в ней вот руководство по ручной настройке и установке, но я рекомендовал бы делать это через контейнер, и не засорять систему
Вы всегда можете поддержать автора, разработавшего библиотеку Yowsup ссылка
- Информация из его аккаунта на гитхаб
- Tarek Tgalal
- tare2.galal@gmail.com
- https://twitter.com/tgalal