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
106
107
108
109
110
|
import logging
from threading import Event
import random
import time
from omegle import OmegleChat
import aiml
k=aiml.Kernel()
#k.bootstrap(learnFiles="aiml_files/std-startup.xml", commands="load aiml b")
k.bootstrap(learnFiles="aiml_files/German-standalone.aiml")
class PyAIMLBot(OmegleChat):
def __init__(self,disconnect_event,name,host="omegle.com",color=0):
self.disconnect_event = disconnect_event
self.name=name
self.color = color
OmegleChat.__init__(self,name=" PyAIML",host=host)
self.idlecount = 0
def c(self,str,bold=False,color=0):
if color == 0:
color = self.color
if bold:
return "\033[1m\033[%sm%s\033[0m\033[0m" %(color, str)
else:
return "\033[%sm%s\033[0m" %(self.color, str)
def respond(self,message,prepend=""):
r=k.respond(message.encode("utf-8"))
print self.c("%s [MSG] %s: %s" %(time.strftime("%H:%M:%S"), self.name, r),bold=True)
try:
self.send(r) #.decode("utf-8"))
except Exception,e:
print e
self.disconnect_event.set()
def on_idle(self):
self.idlecount += 1
if self.idlecount > 8:
self.logger.info("Idle > 8. disconnect()")
self.disconnect()
self.disconnect_event.set()
else:
self.logger.info("Idle count %s/8" % self.idlecount)
if self.is_confirmed:
self.respond("hey?") #restart the conv.
def on_message(self,message):
self.logger.info("Stranger: %s" % message)
print self.c("%s [MSG] %s: %s" %(
time.strftime("%H:%M:%S"), "Stranger", message),bold=True,color=32)
self.idlecount = 0
time.sleep(0.05)
self.logger.info("Bot simulate typing")
# typestr = "%s [EVT] %s: typing" %(time.strftime("%H:%M:%S"),self.name)
#print self.c(typestr,bold=True,color=32)
try:
self.typing()
except Exception,e:
try:
self.disconnect()
except:
self.disconnect_event.set()
return
time.sleep(random.randint(2,5))
self.respond(message) #prepend="\033[1A\033[2K\033[%sD"%(len(typestr))) #move up 1; delete line; move left %s
def on_connect(self):
print self.c("%s [EVT] %s Connection confirmed" % (time.strftime("%H:%M:%S"), self.name))
def on_disconnect(self):
print self.c("%s [EVT] %s disconnect" % (time.strftime("%H:%M:%S"), self.name))
self.disconnect_event.set()
if __name__ == "__main__":
import getopt
import sys
host = "omegle.com"
local=False
logging.basicConfig(level=logging.DEBUG)
if local:
print "CTRL-C\n>>> ",
while True:
x=sys.stdin.readline().strip()
print "<<< %s\n>>> " % k.respond(x),
else:
print "press ctrl-c to abort"
event = Event()
bot=PyAIMLBot(event,"A",host=host,color=31)
bot.start()
try:
while True:
event.wait(0.5)
if event.isSet():
print "disconnect_event set"
break
except KeyboardInterrupt:
print "CTRL-C pressed, exiting"
if bot.is_connected: bot.disconnect()
|