Send fake quit and nick messages to every channel

This commit is contained in:
Mark Veidemanis 2019-08-11 21:52:46 +01:00
parent 3a92ebab6b
commit 1c8cbf808b
1 changed files with 17 additions and 13 deletions

View File

@ -336,9 +336,9 @@ class IRCBot(IRCClient):
Called when a user has quit.
"""
nick = prefix.split('!')[0]
if nick == self.nickname:
self.botQuit(prefix, params[0])
else:
#if nick == self.nickname:
#self.botQuit(prefix, params[0])
#else:
self.userQuit(prefix, params[0])
def irc_NICK(self, prefix, params):
@ -416,13 +416,8 @@ class IRCBot(IRCClient):
def userQuit(self, user, quitMessage):
nick, ident, host = self.parsen(user)
self.chanlessEvent(type="quit", nick=nick, ident=ident, host=host, message=quitMessage)
userinfo.delUserByNetwork(self.net, nick, user)
self.event(type="quit", nick=nick, ident=ident, host=host, message=quitMessage)
def botQuit(self, user, quitMessage):
nick, ident, host = self.parsen(user)
userinfo.delUserByNetwork(self.net, nick, user)
self.event(type="quit", nick=nick, ident=ident, host=host, message=quitMessage)
def userKicked(self, kickee, channel, kicker, message):
nick, ident, host = self.parsen(kicker)
@ -432,10 +427,19 @@ class IRCBot(IRCClient):
self.botLeft(channel)
self.event(type="kick", nick=nick, ident=ident, host=host, target=channel, message=message, user=kickee)
def chanlessEvent(self, **cast):
chans = userinfo.getChansSingle(self.net, cast["nick"])
if chans == None:
self.event(**cast)
return
for i in chans:
cast["target"] = i
self.event(**cast)
def userRenamed(self, oldname, newname):
nick, ident, host = self.parsen(oldname)
self.chanlessEvent(type="nick", nick=nick, ident=ident, host=host, user=newname)
userinfo.renameUser(self.net, nick, oldname, newname, newname+"!"+ident+"@"+host)
self.event(type="nick", nick=nick, ident=ident, host=host, user=newname)
def topicUpdated(self, user, channel, newTopic):
nick, ident, host = self.parsen(user)
@ -449,7 +453,7 @@ class IRCBot(IRCClient):
argList = list(args)
modeList = [i for i in modes]
for a, m in zip(argList, modeList):
self.event(type="mode", nick=nick, ident=ident, host=host, target=channel, modes=m, modeargs=a)
self.event(type="mode", nick=nick, ident=ident, host=host, target=channel, modes=m, status=toset, modeargs=a)
class IRCBotFactory(ReconnectingClientFactory):
def __init__(self, name, relay=None, relayCommands=None, user=None, stage2=None):
@ -478,7 +482,7 @@ class IRCBotFactory(ReconnectingClientFactory):
def clientConnectionLost(self, connector, reason):
if not self.relay:
userinfo.delNetwork(self.name, self.client.channels)
userinfo.delNetwork(self.net, self.client.channels)
if not self.client == None:
self.client.connected = False
self.client.channels = []