Metadata-Version: 2.4
Name: wasock
Version: 0.5.0b4
Summary: WAsock (WhatsApp Socket) - a Python wrapper around Baileys for building WhatsApp bots
Author: Ahmed Mohmmed-AM
License: MIT
Project-URL: Homepage, https://github.com/AhmedMohmmed-AM/WAsock
Project-URL: Repository, https://github.com/AhmedMohmmed-AM/WAsock
Keywords: whatsapp,baileys,bot,chat,automation,whatsapp-socket
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: qrcode
Requires-Dist: pillow
Dynamic: license-file

# WAsock

**wasock** (WhatsApp Socket) — مكتبة بايثون بسيطة للتعامل مع واتساب، مبنية فوق [Baileys](https://github.com/WhiskeySockets/Baileys) عن طريق عملية Node.js فرعية بتتواصل مع بايثون عبر TCP socket.

صُنعت بواسطة مطور مصري 🇪🇬 — Ahmed Mohmmed-AM.

> **الحالة:** `0.5.0-Beta` — لسه تحت التطوير، ممكن يحصل تغييرات في الـ API قبل النسخة المستقرة.

---

## نظرة عامة (Overview)

wasock بتديك واجهة بايثونية سهلة للتعامل مع واتساب: استقبال رسايل، الرد عليها، بعت رسايل جديدة، حذف رسايل، وعرض QR Code لتسجيل الدخول — من غير ما تحتاج تكتب سطر JavaScript واحد.

wasock is a lightweight Python wrapper around [Baileys](https://github.com/WhiskeySockets/Baileys). It spawns a Node.js subprocess and talks to it over a local TCP socket, so you can send, receive, reply to, and delete WhatsApp messages entirely from Python.

---

## المتطلبات (Requirements)

- Python >= 3.8
- Node.js (>= 18 موصى بيه)
- اتصال بالإنترنت لتثبيت اعتماديات npm الأولى

---

## التثبيت (Installation)

```bash
pip install wasock
```

بعد التثبيت، لازم تثبت اعتماديات Node مرة واحدة (Baileys وpino) جوه فولدر المكتبة:

After installing, you need to install the Node.js dependencies once:

```bash
cd $(python -c "import wasock, os; print(os.path.join(os.path.dirname(wasock.__file__), 'node'))")
npm install
```

---

## استخدام سريع (Quick Start)

```python
from wasock import WhatsAppSocket, Message, QRCode, Connection

bot = WhatsAppSocket(authName="auth", loggerLevel="silent")

def onQr(data):
    qr = QRCode(data["qr"], size="mid", type="img")
    img = qr.render()
    img.save("qr.png")
    print("امسح qr.png من واتساب على موبايلك")

def onConnection(data):
    conn = Connection(data)
    if conn.connected:
        print("الاتصال فتح!")
    else:
        print(f"الاتصال اتقفل: {conn.reason}")

def onMessage(data):
    message = Message(data, bot.nodeJS)
    if message.fromBot:
        return

    if message.text == "!ping":
        message.reply("pong")

bot.on("qr", onQr)
bot.on("connection", onConnection)
bot.on("message", onMessage)

bot.start()

try:
    input("البوت شغال، دوس Enter للخروج...\n")
finally:
    bot.end()
```

---

## الـ API

### `WhatsAppSocket(authName="auth", loggerLevel="silent")`

بيبدأ الاتصال بسيرفر Node ويجهز الجلسة.

- `.start()` — يبدأ الاتصال الفعلي بواتساب.
- `.on(event, callback)` — يسجل event listener (`"qr"`, `"connection"`, `"message"`).
- `.end()` — يقفل الاتصال ويوقف عملية Node.

### `Message`

بيتبني تلقائيًا لكل رسالة واردة. من أهم الخصائص:


| الخاصية                              | الوصف                                                                      |
| ------------------------------------------- | ------------------------------------------------------------------------------- |
| `.text`                                     | نص الرسالة                                                             |
| `.chat`                                     | الـ JID بتاع المحادثة                                            |
| `.fromBot`                                  | `True` لو الرسالة من البوت نفسه                             |
| `.quoted` / `.quotedText` / `.quotedSender` | بيانات الرسالة المقتبسة (لو الرسالة ريبلاي) |

**Methods:**

- `.reply(msg, chat=None, quoted=None)` — يرد على الرسالة.
- `.send(msg, chat=None)` — يبعت رسالة جديدة (من غير quote).
- `.delete()` — يمسح الرسالة (Delete for Everyone).

### `QRCode(data, size="mid", type="terminal")`

- `size`: `"small"`, `"mid"`, `"big"`
- `type`: `"terminal"` (يطبع في التيرمينال) أو `"img"` (يرجع صورة تقدر تعمله `.save()`)

### `Connection`

- `.connected` — `True`/`False`
- `.statusCode` — كود الإغلاق (لو موجود)
- `.reason` — سبب الإغلاق (لو موجود)
- `.isAuthFailure()` — `True` لو السبب كان 401 (محتاج QR جديد)

---

## ملاحظات مهمة (Important Notes)

- فولدر `auth/` بيحتوي على بيانات جلسة واتساب الحساسة — **متعملوش commit على GitHub أبدًا**.
- مكان `auth/` بيتحدد نسبيًا لمكان تشغيل السكريبت (working directory)، مش لمكان المكتبة.

---

## الترخيص (License)

MIT License — تفاصيل أكتر في ملف [LICENSE](./LICENSE).

---

## المطور (Author)

Ahmed Mohmmed-AM — مطور مصري 🇪🇬
GitHub: [@Ahmed-Mohmmed-AM](https://github.com/AhmedMohmmed-AM)
