mirror of
https://github.com/jlu5/PyLink.git
synced 2024-12-25 04:02:45 +01:00
core: allow defining service bots with custom nicks/idents
This commit is contained in:
parent
bb265189a4
commit
118d76fd5a
@ -210,8 +210,11 @@ def spawn_service(irc, source, command, args):
|
|||||||
return
|
return
|
||||||
|
|
||||||
name = args['name']
|
name = args['name']
|
||||||
ident = irc.botdata.get('ident') or 'pylink'
|
# TODO: make this configurable?
|
||||||
host = irc.serverdata["hostname"]
|
host = irc.serverdata["hostname"]
|
||||||
|
|
||||||
|
# Prefer spawning service clients with umode +io, plus hideoper and
|
||||||
|
# hidechans if supported.
|
||||||
modes = []
|
modes = []
|
||||||
for mode in ('oper', 'hideoper', 'hidechans', 'invisible'):
|
for mode in ('oper', 'hideoper', 'hidechans', 'invisible'):
|
||||||
mode = irc.umodes.get(mode)
|
mode = irc.umodes.get(mode)
|
||||||
@ -219,9 +222,10 @@ def spawn_service(irc, source, command, args):
|
|||||||
modes.append((mode, None))
|
modes.append((mode, None))
|
||||||
|
|
||||||
# Track the service's UIDs on each network.
|
# Track the service's UIDs on each network.
|
||||||
service = world.services[name]
|
sbot = world.services[name]
|
||||||
service.uids[irc.name] = u = irc.proto.spawnClient(name, name,
|
sbot.uids[irc.name] = u = irc.proto.spawnClient(sbot.nick, sbot.ident,
|
||||||
irc.serverdata['hostname'], modes=modes, opertype="PyLink Service").uid
|
host, modes=modes, opertype="PyLink Service",
|
||||||
|
manipulatable=sbot.manipulatable).uid
|
||||||
|
|
||||||
# TODO: channels should be tracked in a central database, not hardcoded
|
# TODO: channels should be tracked in a central database, not hardcoded
|
||||||
# in conf.
|
# in conf.
|
||||||
|
11
utils.py
11
utils.py
@ -151,9 +151,18 @@ def getDatabaseName(dbname):
|
|||||||
return dbname
|
return dbname
|
||||||
|
|
||||||
class ServiceBot():
|
class ServiceBot():
|
||||||
def __init__(self, name, default_help=True, default_request=True, default_list=True):
|
def __init__(self, name, default_help=True, default_request=True, default_list=True,
|
||||||
|
nick=None, ident=None, manipulatable=False):
|
||||||
|
# Service name
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
|
# Nick/ident to take. Defaults to the same as the service name if not given.
|
||||||
|
self.nick = nick or name
|
||||||
|
self.ident = ident or name
|
||||||
|
|
||||||
|
# Tracks whether the bot should be manipulatable by the 'bots' plugin and other commands.
|
||||||
|
self.manipulatable = manipulatable
|
||||||
|
|
||||||
# We make the command definitions a dict of lists of functions. Multiple
|
# We make the command definitions a dict of lists of functions. Multiple
|
||||||
# plugins are actually allowed to bind to one function name; this just causes
|
# plugins are actually allowed to bind to one function name; this just causes
|
||||||
# them to be called in the order that they are bound.
|
# them to be called in the order that they are bound.
|
||||||
|
Loading…
Reference in New Issue
Block a user