lc-at / kyros

Python wrapper for WhatsApp Web API websocket communication (based on https://github.com/sigalor/whatsapp-web-reveng)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

error: connection_data["phone"]

vhdm opened this issue · comments

commented

dear @p4kl0nc4t please help me

my code is:
` # create the Client instance using create class method
whatsapp = await kyros.Client.create()

# do a QR login
qr_data, scanned = await whatsapp.qr_login()

# generate qr code image
qr_code = pyqrcode.create(qr_data)
print(qr_code.png('code.png', scale=1, module_color=[0, 0, 0, 128], background=[0xff, 0xff, 0xff]))
# print(qr_code.terminal(quiet_zone=0))`

after scan qr code, occur this error:

Traceback (most recent call last): File "init.py", line 41, in <module> asyncio.run(main()) File "/usr/local/lib/python3.8/asyncio/runners.py", line 43, in run return loop.run_until_complete(main) File "/usr/local/lib/python3.8/asyncio/base_events.py", line 612, in run_until_complete return future.result() File "init.py", line 26, in main await scanned File "/tmp/w/lib/python3.8/site-packages/kyros/client.py", line 103, in wait_qr_scan self.phone_info = connection_data["phone"] KeyError: 'phone'

Well, that's bad. It seems like the WhatsApp Web API has quite changed. I am busy now, I will take a look on that later.

commented

If it helps, the value of connection_data on ln 102 of /path/to/venv/lib/python3.9/site-packages/kyros/client.py is:

{'type': 'upgrade_md_prod', 'version': '2.2126.11'}

At least for me.
The dictionary does not contain the phone key, hence the error. I am facing the same error.

I don't seem to be able to reproduce this issue.
i can't reproduce

@rijumone Your connection_data value looks bad. I think this issue is much more seriuous than I initially thought. The connection_data object should contain many important details as specified in here. The values especially the tokens are mandatory for kyros to be working properly.

Below is my connection_data value.
image

Checking this.

I can't reproduce the error. Is it related to this?

I can't reproduce the error. Is it related to this?

I think, yes! The message received (lacking the phone key) is identical and even my WA a/c is multi-device enabled as mentioned in the linked issue. Is your WA a/c multi-device enabled?
I am trying to check if I have access to a WA a/c with multi-device disabled.

I procured a device with a W/A a/c which has never been logged into W/A (at least I believe so, definitely never been logged in as a multi-device). Now, while the library itself does not throw any errors, the script just exits.
I am checking the code for the same as to why this is happening.
Attaching a screenshot of the same.
image

I have similar results when I scanned it using a multi-device enabled WhatsApp (produces no output, just exits). Try setting the logger mode to DEBUG.

logging.getLogger("kyros").setLevel(logging.DEBUG)

I found out that the WhatsApp websocket server closed the connection right after the QR scan. It seems that many things have to be adjusted. Baileys and whatsmeow both supports multi-device. I think they can be used as a reference.

I have similar results when I scanned it using a multi-device enabled WhatsApp (produces no output, just exits). Try setting the logger mode to DEBUG.

logging.getLogger("kyros").setLevel(logging.DEBUG)

I found out that the WhatsApp websocket server closed the connection right after the QR scan. It seems that many things have to be adjusted. Baileys and whatsmeow both supports multi-device. I think they can be used as a reference.

@p4kl0nc4t Apologies for the late response, last week has been incredibly busy.
I am still getting the same traceback.

Traceback (most recent call last):
  File "/home/rijumone/Kitchen/kyros/main.py", line 43, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/home/rijumone/Kitchen/kyros/main.py", line 28, in main
    await scanned
  File "/home/rijumone/Kitchen/kyros/.venv/lib/python3.9/site-packages/kyros/client.py", line 102, in wait_qr_scan
    self.phone_info = connection_data["phone"]
KeyError: 'phone'

Printing connection_data on ln 101 in file: .venv/lib/python3.9/site-packages/kyros/client.py still outputs:

{'type': 'upgrade_md_prod', 'version': '2.2126.11'}

There is no phone key which is being accessed on ln 102.

I am checking the issue you linked previously. Do you have any suggestion?

@p4kl0nc4t I was able to have a successful login using this particular branch of this repo.

Though what a successful login means, I am still investigating. I was able to scan the QR code on my phone and it didn't error out. Terminal spewed out some debug text showing my contacts data.

This is in TS which I am not familiar with. Suggestions welcome.

@p4kl0nc4t I was able to have a successful login using this particular branch of this repo.

Though what a successful login means, I am still investigating. I was able to scan the QR code on my phone and it didn't error out. Terminal spewed out some debug text showing my contacts data.

This is in TS which I am not familiar with. Suggestions welcome.

I can help reviewing it, i have worked with TS. I'm using WA Business and it's working fine on my Android phone (I have testes develop branch). I don't have tested on WA multidevice, maybe with the support of multiple devices maybe there are some changes, but i don't think so because phone contains only the information of the real device (battery, os, wa version, model, manufactures) and the support of multiple device allow up to 4 instances of Web WA, but only 1 phone.

Maybe the field was removed in new versions of WA because phone can be offline or off. In any case i think that it can be ignored.

If you can share the steps to reproduce the error it would help me