5
""" the fleet makes it possible to run multiple bots in one gozerbot.
6
this can both be irc and jabber bots
9
__copyright__ = 'this file is in the public domain'
10
__gendoclast__ = ['fleet-disconnect', 'fleet-del']
12
from gozerbot.fleet import fleet
13
from gozerbot.commands import cmnds
14
from gozerbot.examples import examples
15
from gozerbot.plughelp import plughelp
16
from gozerbot.aliases import aliasset
17
from gozerbot.config import config
19
plughelp.add('fleet', 'manage list of bots')
21
def handle_fleetconnect(bot, ievent):
22
""" fleet-connect <botname> .. connect a fleet bot to it's server """
24
botname = ievent.args[0]
26
ievent.missing('<botname>')
29
if fleet.connect(botname):
30
ievent.reply('%s connected' % botname)
32
ievent.reply("can't connect %s" % botname)
36
cmnds.add('fleet-connect', handle_fleetconnect, 'OPER')
37
examples.add('fleet-connect', 'connect bot with <name> to irc \
38
server', 'fleet-connect test')
40
def handle_fleetdisconnect(bot, ievent):
41
""" fleet-disconnect <botname> .. disconnect a fleet bot from server """
43
botname = ievent.args[0]
45
ievent.missing('<botname>')
47
ievent.reply('exiting %s' % botname)
49
if fleet.exit(botname):
50
ievent.reply("%s bot stopped" % botname)
52
ievent.reply("can't stop %s bot" % botname)
56
cmnds.add('fleet-disconnect', handle_fleetdisconnect, 'OPER')
57
examples.add('fleet-disconnect', 'fleet-disconnect <name> .. disconnect \
58
bot with <name> from irc server', 'fleet-disconnect test')
60
def handle_fleetlist(bot, ievent):
61
""" fleet-list .. list bot names in fleet """
62
ievent.reply("fleet: ", fleet.list(), dot=True)
64
cmnds.add('fleet-list', handle_fleetlist, ['USER', 'WEB'])
65
examples.add('fleet-list', 'show current fleet list', 'fleet-list')
67
def handle_fleetaddirc(bot, ievent):
68
""" fleed-addirc <name> <nick> <server> [port] [passwd] [ipv6] .. add irc \
70
from gozerbot.bot import Bot
71
length = len(ievent.args)
73
(name, nick, server, ipv6, ssl, port, password) = ievent.args
75
(name, nick, server, ipv6, ssl, port) = ievent.args
78
(name, nick, server, ipv6, ssl) = ievent.args
85
(name, nick, server, ipv6) = ievent.args
90
(name, nick, server) = ievent.args
96
ievent.missing('<name> <nick> <server> [<ipv6>] [<ssl>] [<port>] \
99
if fleet.byname(name):
100
ievent.reply('we already have a bot with %s name in fleet' % \
103
b = Bot(name, config['owneruserhost'])
107
b.password = password
113
ievent.reply('%s started' % name)
114
except Exception, ex:
115
ievent.reply(str(ex))
118
cmnds.add('fleet-addirc', handle_fleetaddirc, 'OPER')
119
examples.add('fleet-addirc', 'fleet-addirc <name> <nick> <server> [ipv6] \
120
[port] [passwd] .. add new server to fleet', 'fleet-addirc test3 gozertest \
122
aliasset('fleet-add', 'fleet-addirc')
124
def handle_fleetaddjabber(bot, ievent):
125
""" fleed-addjabber <name> <host> <user> <password> [port] .. add jabber \
130
ievent.reply('xmpp is not enabled .. install the xmpppy package')
132
from gozerbot.jabberbot import Jabberbot
133
if not bot.type == 'jabber':
134
ievent.reply('use this command on a jabber bot (and change \
135
password if you used it)')
138
ievent.reply('use this command in a private message (and change \
139
password if you used it)')
141
length = len(ievent.args)
143
(name, host, user, password, port) = ievent.args
145
(name, host, user, password) = ievent.args
148
ievent.missing('<name> <host> <user> <password> [<port>]')
150
if fleet.byname(name):
151
ievent.reply('we already have a bot with %s name in fleet' % \
157
b.password = password
162
ievent.reply('%s started' % name)
163
except Exception, ex:
164
ievent.reply(str(ex))
167
cmnds.add('fleet-addjabber', handle_fleetaddjabber, 'OPER')
168
examples.add('fleet-addjabber', 'fleet-addjabber <name> <host> <user> \
169
<passwd> [<port>] .. add new jabber server to fleet', 'fleet-addjabber test2 \
170
jabber.xs4all.nl jtest@jabber.xs4all.nl xwe23')
172
def handle_fleetdel(bot, ievent):
173
""" fleet-del <botname> .. delete bot from fleet """
175
name = ievent.args[0]
177
ievent.missing('<name>')
180
if fleet.delete(name):
181
ievent.reply('%s deleted' % name)
183
ievent.reply('%s delete failed' % name)
184
except Exception, ex:
185
ievent.reply(str(ex))
187
cmnds.add('fleet-del', handle_fleetdel, 'OPER')
188
examples.add('fleet-del', 'fleet-del <botname> .. delete bot from fleet \
189
list', 'fleet-del test')
191
def docmnd(bot, ievent):
192
""" cmnd 'all'|<botname> <cmnd> .. do command on bot/all bots """
194
name = ievent.args[0]
195
cmnd = ' '.join(ievent.args[1:])
197
ievent.missing('<name> <cmnd>')
200
ievent.missing('<name> <cmnd>')
202
if cmnd.find('cmnd') != -1:
203
ievent.reply("no looping please ;]")
207
fleet.cmndall(ievent, cmnd)
209
fleet.cmnd(ievent, name, cmnd)
210
except Exception, ex:
211
ievent.reply(str(ex))
213
cmnds.add('cmnd', docmnd, ['USER', 'WEB'])
214
examples.add('cmnd', "cmnd all|<botname> <cmnd> .. excecute command on \
215
bot with <name> or on all fleet bots", '1) cmnd main st 2) cmnd all st')