Add a way to send a message to network bot attached to a server
This commit is contained in:
parent
818bc5f889
commit
92533d934b
6
bot.py
6
bot.py
@ -187,6 +187,8 @@ class Bot:
|
|||||||
"""Add a new server to the context"""
|
"""Add a new server to the context"""
|
||||||
srv = IRCServer(node, nick, owner, realname)
|
srv = IRCServer(node, nick, owner, realname)
|
||||||
srv.add_hook = lambda h: self.hooks.add_hook("irc_hook", h, self)
|
srv.add_hook = lambda h: self.hooks.add_hook("irc_hook", h, self)
|
||||||
|
srv.add_networkbot = self.add_networkbot
|
||||||
|
srv.send_bot = lambda d: self.send_networkbot(srv, d)
|
||||||
srv.register_hooks()
|
srv.register_hooks()
|
||||||
if srv.id not in self.servers:
|
if srv.id not in self.servers:
|
||||||
self.servers[srv.id] = srv
|
self.servers[srv.id] = srv
|
||||||
@ -263,6 +265,10 @@ class Bot:
|
|||||||
self.network[id] = NetworkBot(self, srv, dest, dcc)
|
self.network[id] = NetworkBot(self, srv, dest, dcc)
|
||||||
return self.network[id]
|
return self.network[id]
|
||||||
|
|
||||||
|
def send_networkbot(self, srv, cmd, data=None):
|
||||||
|
for bot in self.network:
|
||||||
|
if self.network[bot].srv == srv:
|
||||||
|
self.network[bot].send_cmd(cmd, data)
|
||||||
|
|
||||||
def quit(self, verb=False):
|
def quit(self, verb=False):
|
||||||
"""Save and unload modules and disconnect servers"""
|
"""Save and unload modules and disconnect servers"""
|
||||||
|
@ -34,6 +34,9 @@ class NetworkBot:
|
|||||||
self.dest = dest
|
self.dest = dest
|
||||||
|
|
||||||
self.dcc = dcc # DCC connection to the other bot
|
self.dcc = dcc # DCC connection to the other bot
|
||||||
|
if self.dcc is not None:
|
||||||
|
self.dcc.closing_event = self.closing_event
|
||||||
|
|
||||||
self.hooks = list()
|
self.hooks = list()
|
||||||
self.REGISTERED_HOOKS = list()
|
self.REGISTERED_HOOKS = list()
|
||||||
|
|
||||||
@ -43,27 +46,34 @@ class NetworkBot:
|
|||||||
self.tags = dict()
|
self.tags = dict()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
def id(self):
|
||||||
|
return self.dcc.id
|
||||||
|
@property
|
||||||
def sender(self):
|
def sender(self):
|
||||||
if self.dcc is not None:
|
if self.dcc is not None:
|
||||||
return self.dcc.sender
|
return self.dcc.sender
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nick(self):
|
def nick(self):
|
||||||
if self.dcc is not None:
|
if self.dcc is not None:
|
||||||
return self.dcc.nick
|
return self.dcc.nick
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def realname(self):
|
def realname(self):
|
||||||
if self.dcc is not None:
|
if self.dcc is not None:
|
||||||
return self.dcc.realname
|
return self.dcc.realname
|
||||||
return None
|
return None
|
||||||
|
@property
|
||||||
|
def owner(self):
|
||||||
|
return self.srv.owner
|
||||||
|
|
||||||
def isDCC(self, someone):
|
def isDCC(self, someone):
|
||||||
"""Abstract implementation"""
|
"""Abstract implementation"""
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def accepted_channel(self, chan, sender=None):
|
||||||
|
return True
|
||||||
|
|
||||||
def send_cmd(self, cmd, data=None):
|
def send_cmd(self, cmd, data=None):
|
||||||
"""Create a tag and send the command"""
|
"""Create a tag and send the command"""
|
||||||
# First, define a tag
|
# First, define a tag
|
||||||
@ -114,6 +124,7 @@ class NetworkBot:
|
|||||||
"""Making the connexion with dest through srv"""
|
"""Making the connexion with dest through srv"""
|
||||||
if self.dcc is None or not self.dcc.connected:
|
if self.dcc is None or not self.dcc.connected:
|
||||||
self.dcc = DCC(self.srv, self.dest)
|
self.dcc = DCC(self.srv, self.dest)
|
||||||
|
self.dcc.closing_event = self.closing_event
|
||||||
self.dcc.treatement = self.hello
|
self.dcc.treatement = self.hello
|
||||||
self.dcc.send_dcc("NEMUBOT###")
|
self.dcc.send_dcc("NEMUBOT###")
|
||||||
else:
|
else:
|
||||||
@ -157,6 +168,10 @@ class NetworkBot:
|
|||||||
#print ("request:", line)
|
#print ("request:", line)
|
||||||
self.request(tag, cmd, args)
|
self.request(tag, cmd, args)
|
||||||
|
|
||||||
|
def closing_event(self):
|
||||||
|
for lvl in self.hooks:
|
||||||
|
lvl.clear()
|
||||||
|
|
||||||
def response(self, line, tag, args, t):
|
def response(self, line, tag, args, t):
|
||||||
(cmds, data) = t
|
(cmds, data) = t
|
||||||
#print ("response for", cmds, ":", args)
|
#print ("response for", cmds, ":", args)
|
||||||
|
@ -26,6 +26,7 @@ class Server(threading.Thread):
|
|||||||
self.stopping = threading.Event()
|
self.stopping = threading.Event()
|
||||||
self.s = socket
|
self.s = socket
|
||||||
self.connected = self.s is not None
|
self.connected = self.s is not None
|
||||||
|
self.closing_event = None
|
||||||
|
|
||||||
self.moremessages = dict()
|
self.moremessages = dict()
|
||||||
|
|
||||||
@ -61,6 +62,9 @@ class Server(threading.Thread):
|
|||||||
"""Gives the server identifiant"""
|
"""Gives the server identifiant"""
|
||||||
raise NotImplemented()
|
raise NotImplemented()
|
||||||
|
|
||||||
|
def accepted_channel(self, msg, sender=None):
|
||||||
|
return True
|
||||||
|
|
||||||
def msg_treated(self, origin):
|
def msg_treated(self, origin):
|
||||||
"""Action done on server when a message was treated"""
|
"""Action done on server when a message was treated"""
|
||||||
raise NotImplemented()
|
raise NotImplemented()
|
||||||
@ -75,6 +79,8 @@ class Server(threading.Thread):
|
|||||||
self.send_msg(res.channel, res.get_message())
|
self.send_msg(res.channel, res.get_message())
|
||||||
|
|
||||||
if not res.alone:
|
if not res.alone:
|
||||||
|
if hasattr(self, "send_bot"):
|
||||||
|
self.send_bot("NOMORE %s" % res.channel)
|
||||||
self.moremessages[res.channel] = res
|
self.moremessages[res.channel] = res
|
||||||
elif res.sender is not None:
|
elif res.sender is not None:
|
||||||
self.send_msg_usr(res.sender, res.get_message())
|
self.send_msg_usr(res.sender, res.get_message())
|
||||||
|
Loading…
Reference in New Issue
Block a user