removed help cmd
[slashmodeplusvnoise:legacy.git] / bots / r3340 / r3340-stripped.py
1 #!/usr/bin/env python
2 # r3340 - an OSC IRC bot that want to take over the world
3 # DEPENDS: python-liblo, python-irclib
4
5 import liblo, sys
6 from ircbot import SingleServerIRCBot
7 from irclib import nm_to_n, nm_to_h, irc_lower, ip_numstr_to_quad, ip_quad_to_numstr
8
9 # send to OSC server <port> on localhost
10 # joins <channel>, as <nickname>
11 if len(sys.argv) == 4:
12     (nickname, channel, ports) = (sys.argv[1], sys.argv[2], sys.argv[3])
13 else:
14     print '\033[1;31mUsage:\033[m r3340.py <nickname> \<irc-channel> <OSC port(s)>'
15     print '\033[1;32mexample:\033[m ./r3340.py r3340 \#mode+v 57120'
16     print '\033[1;32mexample:\033[m ./r3340.py banana \#goto10 9997,9998,9999'
17     sys.exit(1)
18
19 try:
20     targets = {}
21     for port in ports.split(','):
22         targets[port] = liblo.Address(port)
23
24 except liblo.AddressError, err:
25     print str(err)
26     sys.exit("oioioi osc address error")
27
28 # we are the robots
29 class TestBot(SingleServerIRCBot):
30     def __init__(self, channel, nickname, server, port=6667):
31         SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
32         self.channel = channel
33
34     def on_nicknameinuse(self, c, e):
35         c.nick(c.get_nickname() + "_")
36
37     def on_welcome(self, c, e):
38         c.join(self.channel)
39         print "I'm in " + channel
40
41     def on_pubmsg(self, c, e):
42         a = e.arguments()[0].split(":", 1)
43         if len(a) == 1 :
44             self.do_command(e, a[0])
45         return
46
47     def do_command(self, e, cmd):
48         nick = nm_to_n(e.source())
49         c = self.connection
50
51         msg = liblo.Message("/"+nick)
52         for i in cmd:
53             msg.add(ord(i))
54         for port in ports.split(','):
55             liblo.send(targets[port], msg)
56         print nick + ' -> ' + cmd
57
58 def main():
59     bot = TestBot(channel, nickname, "irc.goto10.org", 6667)
60     bot.start()
61
62 if __name__ == "__main__":
63     main()