-
Notifications
You must be signed in to change notification settings - Fork 4
/
wbot.py
105 lines (99 loc) · 3.97 KB
/
wbot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from time import sleep
browser = None
def start():
global browser
browser = webdriver.Firefox(executable_path='/home/luca/Pojects/wbot/WhatsAppBot/geckodriver') #Pfad zum geckodriver
browser.get('https://web.whatsapp.com/')
print('Scan QR')
def send_messages_to_contact(contact_name, *messages):
while True:
try:
search = browser.find_element_by_css_selector('#side > div._3CPl4 > div > label > input')
except NoSuchElementException:
print('exception')
sleep(1)
continue
break
title = None
try:
title = browser.find_element_by_css_selector('#main > header > div._1WBXd > div > div > span').text
except NoSuchElementException:
pass
if title != contact_name:
search.send_keys(contact_name)
search.send_keys(Keys.ENTER)
try:
not_found = browser.find_element_by_css_selector('#pane-side > div > div > span').text
if not_found == 'No chats, contacts or messages found' or not_found == 'Es wurden keine Chats, Kontakte oder Nachrichten gefunden':
return
except:
pass
try:
input = browser.find_element_by_css_selector('#main > footer > div._3oju3 > div._2bXVy > div > div._2S1VP.copyable-text.selectable-text')
except NoSuchElementException:
return
for m in messages:
for c in m:
if c == '\n':
input.send_keys(Keys.SHIFT, Keys.ENTER)
else:
input.send_keys(c)
input.send_keys(Keys.ENTER)
print('Message sent to ' + contact_name + '.')
sleep(0.6)
def retrieve_newest(contact_name, num):
while True:
try:
#search = browser.find_element_by_id('input-chatlist-search')
search = browser.find_element_by_css_selector('#side > div._3CPl4 > div > label > input')
except NoSuchElementException:
sleep(1)
continue
break
title = None
try:
title = browser.find_element_by_css_selector('#main > header > div._1WBXd > div > div > span').text
except NoSuchElementException:
pass
if title != contact_name:
search.send_keys(contact_name)
search.send_keys(Keys.ENTER)
try:
not_found = browser.find_element_by_css_selector('#pane-side > div > div > span').text
if not_found == 'No chats, contacts or messages found' or not_found == 'Es wurden keine Chats, Kontakte oder Nachrichten gefunden':
return
except:
pass
messages = browser.find_elements_by_css_selector('div > div > div > div.copyable-text > div > span')
newest = []
for i in range(num):
try:
newest.append(messages[i].text)
except IndexError:
break
if i == len(messages) - 1:
browser.find_element_by_tag_name('html').send_keys(Keys.ARROW_UP)
browser.find_element_by_tag_name('html').send_keys(Keys.ARROW_UP)
messages = browser.find_elements_by_css_selector('div > div > div > div.copyable-text > div > span')
return list(reversed(newest))
def set_about(status):
while True:
try:
browser.find_element_by_css_selector('#side > header > div._2umId > div > img').click()
except NoSuchElementException:
sleep(1)
continue
break
sleep(1)
browser.find_element_by_css_selector('#app > div > div > div.MZIyP > div._3q4NP.k1feT > span > div > div > div > div:nth-child(4) > div.ogWqZ._2-h1L > div._1DTd4._1G2k- > div._2YmC2 > span:nth-child(1) > div').click()
input = browser.find_element_by_css_selector('#app > div > div > div.MZIyP > div._3q4NP.k1feT > span > div > div > div > div:nth-child(4) > div.ogWqZ._2-h1L._31WRs > div._1DTd4 > div._3F6QL.bsmJe > div._2S1VP.copyable-text.selectable-text')
input.clear()
input.send_keys(status)
input.send_keys(Keys.ENTER)
print('About changed to "' + status + '".')
browser.find_element_by_css_selector('#app > div > div > div.MZIyP > div._3q4NP.k1feT > span > div > div > header > div > div.SFEHG > button').click()
def close():
browser.close()