Skip to content

Whatsapp bot running in docker container.

Notifications You must be signed in to change notification settings

yakkobr/whatsapp-bot

 
 

Repository files navigation

Yowsup Whatsapp Bot

Этот бот не идеален, и есть некоторые недочеты. Если есть какие-либо предложения или дополнения, с удовольствием обсужу.

Дисклеймер:

Нельзя регистрировать бота на личную симку, не ровен час, политика Whatsapp на данный момент не разрешает создавать полностью автоматизированную систему общения с клиентами и ведет охоту на таких ботов.

Основные файлы скрипта

Название файла Содержание файла
tables_in_DB.sql SQL-скрипт для создания таблицы AuthorizedUsers
run.py Основной запускаемый файл
config.ini Конфигурационный файл модуля
ru.ini Словарь с ответами бота на русском языке
en.ini Словарь с ответами бота на английском языке

Таблицы в БД:

  1. 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 - номер телефона в формате 7xxxxxxxxxx
    • operator_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 ссылка

About

Whatsapp bot running in docker container.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.5%
  • Other 0.5%