It's class-ified now
[scrappy.git] / scrappy.py
blobba07ebc38cebaa25b3333884b6c46d151a3348d4
1 #!/usr/bin/env python
2 # Thou shalt use a fixed tab size of 8
4 import irclib_scrappy
5 import sys
7 DEBUG = True
9 def debug(msg):
10 if DEBUG:
11 print msg
13 class scrappy:
14 def __init__(self):
15 debug("Scrappy bot started.")
16 self.cmdchar = '!'
17 self.nickname = 'Scrappy'
18 self.username = 'scrappy'
19 self.realname = 'Scrappy Bot'
20 self.server = ''
21 self.port = 6667
22 self.chanlist = []
23 self.irc = '' #this will be the socket
24 self.c = '' #Thomas, explain this to me later
25 self.main()
27 def parseArgv(self):
28 """Parse the commandline args and print a usage message if incorrect."""
29 if len(sys.argv) < 3: #Need at least server and nick
30 self.printUsage()
31 sys.exit(1)
33 s = sys.argv[1].split(":", 1)
34 self.server = s[0]
36 if len(s) == 2:
37 try:
38 self.port = int(s[1])
39 except ValueError:
40 print "Error: Erroneous port."
41 sys.exit(1)
43 self.nickname = sys.argv[2]
44 for ch in sys.argv[3:]:
45 self.chanlist.append('#%s' % ch)
47 def printUsage(self):
48 print 'Usage: %s <server[:port]> <nickname> [channel 1 channel 2 ... channelN]' % sys.argv[0]
50 def main(self):
51 self.parseArgv()
52 self.irc = irclib_scrappy.IRC()
53 try:
54 self.c = self.irc.server().connect(self.server, self.port, self.nickname)
55 except irclib.ServerConnectionError, x:
56 print x
57 sys.exit(1)
58 #if all goes well, register handlers
59 self.c.add_global_handler("welcome", self.on_connect)
60 self.c.add_global_handler("disconnect", self.on_disconnect)
61 self.c.add_global_handler("privmsg", self.on_privmsg)
62 self.c.add_global_handler("pubmsg", self.on_pubmsg)
64 self.irc.process_forever()
66 ################
67 #Event Handlers#
68 ################
69 def on_connect(self, c, event):
70 for ch in self.chanlist:
71 if irclib_scrappy.is_channel(ch) :
72 c.join(ch)
74 def on_pubmsg(self, c, event):
75 arg = event.arguments()[0]
77 if arg[0] == cmdchar:
78 cmd = arg.split(cmdchar)[1]
80 #dispatch the command
82 def on_privmsg(self, c, event):
83 cmd = event.arguments()[0]
84 #dispatch the command
86 def on_disconnect(self, c, event):
87 sys.exit(0)
91 if(__name__ == "__main__"):
92 bot = scrappy()
93 #if(__name__ == "__main__"):
95 # if len(sys.argv) < 4:
96 # print "Usage: " + sys.argv[0] + " <server[:port]> <nickname> <channel> [channel2 channel3 ... channelN]"
97 # sys.exit(1)
99 # s = sys.argv[1].split(":", 1)
100 # server = s[0]
102 # if len(s) == 2:
103 # try:
104 # port = int(s[1])
105 # except ValueError:
106 # print "Error: Erroneous port."
107 # sys.exit(1)
108 # else:
109 # port = 6667
111 # nickname = sys.argv[2]
113 # irc = irclib_scrappy.IRC()
115 # try:
116 # c = irc.server().connect(server, port, nickname)
117 # except irclib.ServerConnectionError, x:
118 # print x
119 # sys.exit(1)
121 # c.add_global_handler("welcome", on_connect)
122 # c.add_global_handler("disconnect", on_disconnect)
123 # c.add_global_handler("privmsg", on_privmsg)
124 # c.add_global_handler("pubmsg", on_pubmsg)
126 # irc.process_forever()