forked from cattles/pyavbot-getready
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lwqq-hi.py
98 lines (89 loc) · 2.56 KB
/
lwqq-hi.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
#-*- coding=utf-8 -*-
import os
import sys
curr_path = os.path.dirname(os.path.abspath(__file__))
sys.path.append(curr_path + os.sep + 'webpy')
import web
from webqq import WebQQ
from daemon import Daemon
from os import name as osname
import getpass
import time
import threading
from cgi import escape as htmlescape
LOG_PATH = curr_path + os.sep + 'qqbot_log'
ERR_PATH = curr_path + os.sep + 'qqbot_log_e'
TMPL_PATH = curr_path + os.sep + 'templates'
f_log = None
urls = (
'/', 'log'
)
def reply_qq(sender_id, sender, msg):
global f_log
msg = msg.strip()
f_log.write("<p>" + htmlescape(sender) + " : " + htmlescape(msg) + "</p>")
f_log.flush()
if msg == "醒醒,醒醒":
if sender != "":
return sender + ",来啦来啦~"
else:
return "来啦来啦~"
else:
return ""
class MyDaemon(Daemon):
def qq_init(self):
user = raw_input('QQ:')
pwd = getpass.getpass('Password: ')
self.qq = WebQQ(user, pwd)
self.qq.on_gotmsg = reply_qq
self.qq.login()
def run(self):
global f_log
f_log = open(LOG_PATH, 'a+')
t = threading.Thread(target = webserver)
t.daemon = True
t.start()
while 1:
try:
self.qq.step()
except KeyboardInterrupt:
print "CTRL+C met, exit!"
return
except Exception as e:
print "Error : ", e
def webserver():
app = web.application(urls, globals())
app.run()
class log:
def GET(self):
web.header('Content-type', "text/html; charset=utf-8")
f = open(LOG_PATH)
s = f.read()
f.close()
render = web.template.render(TMPL_PATH)
return render.log(s)
if __name__ == "__main__":
daemon = MyDaemon('/tmp/daemon-qqbot.pid',
stdout = ERR_PATH,
stderr = ERR_PATH)
if osname == 'nt':
daemon.qq_init()
daemon.run()
else:
if len(sys.argv) >= 2:
fa = sys.argv[1]
sys.argv.remove(fa)
if 'start' == fa:
daemon.qq_init()
daemon.start()
elif 'stop' == fa:
daemon.stop()
elif 'restart' == fa:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)