-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.py
77 lines (62 loc) · 2.34 KB
/
bot.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
3
8F6E
7
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
# -*- coding: utf-8 -*-
import os, time
import requests
from datetime import datetime
from webwhatsapi import WhatsAPIDriver
from webwhatsapi.objects.message import Message, MediaMessage
def get_results(query):
requestparams = {
'input': query,
'format': 'plaintext',
'output': 'JSON',
'type': 'full',
}
# Going through the API explorer means we can get by without hitting free API key limits ;)
waurl = 'https://www.wolframalpha.com/input/apiExplorer.jsp'
referer = 'https://products.wolframalpha.com/api/explorer/'
res = requests.get(waurl, params=requestparams,
headers={'referer': referer})
return res.json()
def format_results(results):
if not results['queryresult']['success']:
return "_no valid result :(_"
pods = results['queryresult']['pods']
out_text = ""
for pod in pods:
out_text = out_text + '*' + pod['title'] + '*\n'
out_text = out_text + \
"\n".join(subpod['plaintext'] for subpod in pod['subpods']) + "\n"
return out_text
def handle_message(message, contact):
if isinstance(message, Message):
send_msg = True
if message.get_js_obj()['isGroupMsg']:
if message.content.split(' ')[0].lower() != 'wa':
send_msg = False
else:
query = " ".join(message.content.split(' ')[1:])
else:
if message.content.split(' ')[0].lower() == 'wa':
query = " ".join(message.content.split(' ')[1:])
else:
query = message.content
if send_msg:
print(f"\nQuery: {query}")
result_txt = format_results(get_results(query))
contact.chat.send_message2(result_txt)
profiledir = os.path.join(".", "firefox_cache")
if not os.path.exists(profiledir):
os.makedirs(profiledir)
driver = WhatsAPIDriver(profile=profiledir, client='remote',
command_executor="http://127.0.0.1:4444/wd/hub")
print("Waiting for QR")
driver.wait_for_login()
print("Saving session")
driver.save_firefox_profile(remove_old=False)
print("Bot started")
while True:
print(f"\rchecking for more messages - {datetime.now()}", end='')
for contact in driver.get_unread():
for message in contact.messages:
handle_message(message, contact)
time.sleep(1)