Этот бот не идеален, и есть некоторые недочеты. Если есть какие-либо предложения или дополнения, с удовольствием обсужу.
Нельзя регистрировать бота на личную симку, не ровен час, политика 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