mirror of
https://github.com/ncoevoet/ChanTracker.git
synced 2025-04-26 13:01:06 -05:00
Try harder at attaching hostmasks to nicks.
This commit is contained in:
parent
546cbab98d
commit
bbd7ace6ca
109
plugin.py
109
plugin.py
@ -360,12 +360,17 @@ class Ircd(object):
|
|||||||
self.channels[channel] = Chan(self, channel)
|
self.channels[channel] = Chan(self, channel)
|
||||||
return self.channels[channel]
|
return self.channels[channel]
|
||||||
|
|
||||||
def getNick(self, irc, nick):
|
def getNick(self, irc, nick, raw=False):
|
||||||
if not (nick and irc):
|
if not (nick and irc):
|
||||||
return None
|
return None
|
||||||
self.irc = irc
|
self.irc = irc
|
||||||
if nick not in self.nicks:
|
if nick not in self.nicks:
|
||||||
self.nicks[nick] = Nick(self.logsSize)
|
self.nicks[nick] = Nick(self.logsSize)
|
||||||
|
if not (self.nicks[nick].prefix or raw):
|
||||||
|
try:
|
||||||
|
self.nicks[nick].setPrefix(irc.state.nickToHostmask(nick))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
return self.nicks[nick]
|
return self.nicks[nick]
|
||||||
|
|
||||||
def getItem(self, irc, uid):
|
def getItem(self, irc, uid):
|
||||||
@ -1073,7 +1078,7 @@ class Chan(object):
|
|||||||
|
|
||||||
def addItem(self, mode, value, by, when, db, checkUser=True, ct=None):
|
def addItem(self, mode, value, by, when, db, checkUser=True, ct=None):
|
||||||
# eqIb(+*) (-ov) pattern prefix when
|
# eqIb(+*) (-ov) pattern prefix when
|
||||||
# mode : eqIb -ov + ?
|
# mode: eqIb -ov + ?
|
||||||
if mode != 'm':
|
if mode != 'm':
|
||||||
l = self.getItemsFor(mode)
|
l = self.getItemsFor(mode)
|
||||||
else:
|
else:
|
||||||
@ -1110,16 +1115,8 @@ class Chan(object):
|
|||||||
# leave channel user list management to supybot
|
# leave channel user list management to supybot
|
||||||
ns = []
|
ns = []
|
||||||
if self.name in self.ircd.irc.state.channels and checkUser:
|
if self.name in self.ircd.irc.state.channels and checkUser:
|
||||||
L = []
|
|
||||||
for nick in list(self.ircd.irc.state.channels[self.name].users):
|
for nick in list(self.ircd.irc.state.channels[self.name].users):
|
||||||
L.append(nick)
|
|
||||||
for nick in L:
|
|
||||||
n = self.ircd.getNick(self.ircd.irc, nick)
|
n = self.ircd.getNick(self.ircd.irc, nick)
|
||||||
if not n.prefix:
|
|
||||||
try:
|
|
||||||
n.setPrefix(self.ircd.irc.state.nickToHostmask(nick))
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
m = match(value, n, self.ircd.irc, ct.registryValue('resolveIp'))
|
m = match(value, n, self.ircd.irc, ct.registryValue('resolveIp'))
|
||||||
if m:
|
if m:
|
||||||
i.affects.append(n.prefix)
|
i.affects.append(n.prefix)
|
||||||
@ -1307,7 +1304,7 @@ class Nick(object):
|
|||||||
self.account = None
|
self.account = None
|
||||||
self.logSize = logSize
|
self.logSize = logSize
|
||||||
self.logs = []
|
self.logs = []
|
||||||
# log format :
|
# log format:
|
||||||
# target can be a channel, or 'ALL' when it's related to nick itself
|
# target can be a channel, or 'ALL' when it's related to nick itself
|
||||||
# (account changes, nick changes, host changes, etc)
|
# (account changes, nick changes, host changes, etc)
|
||||||
# [float(timestamp),target,message]
|
# [float(timestamp),target,message]
|
||||||
@ -2150,11 +2147,6 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
for nick in list(irc.state.channels[channel].users):
|
for nick in list(irc.state.channels[channel].users):
|
||||||
n = self.getNick(irc, nick)
|
n = self.getNick(irc, nick)
|
||||||
if not n.prefix:
|
|
||||||
try:
|
|
||||||
n.setPrefix(self.ircd.irc.state.nickToHostmask(nick))
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
m = match(pattern, n, irc, self.registryValue('resolveIp'))
|
m = match(pattern, n, irc, self.registryValue('resolveIp'))
|
||||||
if m:
|
if m:
|
||||||
results.append('[%s - %s]' % (nick, m))
|
results.append('[%s - %s]' % (nick, m))
|
||||||
@ -2645,7 +2637,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
optional('letter'), optional('positiveInt')])
|
optional('letter'), optional('positiveInt')])
|
||||||
|
|
||||||
def getIrcdMode(self, irc, mode, pattern):
|
def getIrcdMode(self, irc, mode, pattern):
|
||||||
# here we try to know which kind of mode and pattern should be computed :
|
# here we try to know which kind of mode and pattern should be computed:
|
||||||
# based on supported modes and extbans on the ircd
|
# based on supported modes and extbans on the ircd
|
||||||
# works for q in charybdis, and should work for unreal and inspire
|
# works for q in charybdis, and should work for unreal and inspire
|
||||||
if 'chanmodes' in irc.state.supported and mode == 'q':
|
if 'chanmodes' in irc.state.supported and mode == 'q':
|
||||||
@ -2827,8 +2819,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
self.forceTickle = True
|
self.forceTickle = True
|
||||||
return i.getChan(irc, channel)
|
return i.getChan(irc, channel)
|
||||||
|
|
||||||
def getNick(self, irc, nick):
|
def getNick(self, irc, nick, raw=True):
|
||||||
return self.getIrc(irc).getNick(irc, nick)
|
return self.getIrc(irc).getNick(irc, nick, raw)
|
||||||
|
|
||||||
def makeDb(self, filename):
|
def makeDb(self, filename):
|
||||||
"""Create a database and connect to it."""
|
"""Create a database and connect to it."""
|
||||||
@ -3217,7 +3209,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
def do352(self, irc, msg):
|
def do352(self, irc, msg):
|
||||||
# WHO $channel
|
# WHO $channel
|
||||||
(nick, ident, host) = (msg.args[5], msg.args[2], msg.args[3])
|
(nick, ident, host) = (msg.args[5], msg.args[2], msg.args[3])
|
||||||
n = self.getNick(irc, nick)
|
n = self.getNick(irc, nick, raw=True)
|
||||||
n.setPrefix('%s!%s@%s' % (nick, ident, host))
|
n.setPrefix('%s!%s@%s' % (nick, ident, host))
|
||||||
chan = self.getChan(irc, msg.args[1])
|
chan = self.getChan(irc, msg.args[1])
|
||||||
chan.nicks[nick] = True
|
chan.nicks[nick] = True
|
||||||
@ -3236,7 +3228,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
status, account, realname) = msg.args
|
status, account, realname) = msg.args
|
||||||
if account == '0':
|
if account == '0':
|
||||||
account = None
|
account = None
|
||||||
n = self.getNick(irc, nick)
|
n = self.getNick(irc, nick, raw=True)
|
||||||
n.setPrefix('%s!%s@%s' % (nick, ident, host))
|
n.setPrefix('%s!%s@%s' % (nick, ident, host))
|
||||||
if self.registryValue('resolveIp') and n.ip is None and ip != '255.255.255.255':
|
if self.registryValue('resolveIp') and n.ip is None and ip != '255.255.255.255':
|
||||||
# validate ip
|
# validate ip
|
||||||
@ -3309,7 +3301,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
|
|
||||||
def doChghost(self, irc, msg):
|
def doChghost(self, irc, msg):
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
(user, host) = msg.args
|
(user, host) = msg.args
|
||||||
hostmask = '%s!%s@%s' % (msg.nick, user, host)
|
hostmask = '%s!%s@%s' % (msg.nick, user, host)
|
||||||
n.setPrefix(hostmask)
|
n.setPrefix(hostmask)
|
||||||
@ -3318,7 +3310,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
|
|
||||||
def doJoin(self, irc, msg):
|
def doJoin(self, irc, msg):
|
||||||
channels = msg.args[0].split(',')
|
channels = msg.args[0].split(',')
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
n.setPrefix(msg.prefix)
|
n.setPrefix(msg.prefix)
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
if len(msg.args) == 3:
|
if len(msg.args) == 3:
|
||||||
@ -3429,7 +3421,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
isBot = msg.prefix == irc.prefix
|
isBot = msg.prefix == irc.prefix
|
||||||
channels = msg.args[0].split(',')
|
channels = msg.args[0].split(',')
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
n.setPrefix(msg.prefix)
|
n.setPrefix(msg.prefix)
|
||||||
reason = ''
|
reason = ''
|
||||||
if len(msg.args) == 2:
|
if len(msg.args) == 2:
|
||||||
@ -3642,7 +3634,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
self._ircs = ircutils.IrcDict()
|
self._ircs = ircutils.IrcDict()
|
||||||
return
|
return
|
||||||
if not isBot:
|
if not isBot:
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
|
n.setPrefix(msg.prefix)
|
||||||
bests = getBestPattern(n, irc, self.registryValue(
|
bests = getBestPattern(n, irc, self.registryValue(
|
||||||
'useIpForGateway'), self.registryValue('resolveIp'))
|
'useIpForGateway'), self.registryValue('resolveIp'))
|
||||||
best = None
|
best = None
|
||||||
@ -3716,15 +3709,13 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
oldNick = msg.prefix.split('!')[0]
|
oldNick = msg.prefix.split('!')[0]
|
||||||
newNick = msg.args[0]
|
newNick = msg.args[0]
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
n = None
|
|
||||||
if oldNick in i.nicks:
|
if oldNick in i.nicks:
|
||||||
n = self.getNick(irc, oldNick)
|
n = self.getNick(irc, oldNick, raw=True)
|
||||||
del i.nicks[oldNick]
|
del i.nicks[oldNick]
|
||||||
if n.prefix:
|
|
||||||
prefixNew = '%s!%s' % (newNick, n.prefix.split('!')[1])
|
|
||||||
n.setPrefix(prefixNew)
|
|
||||||
i.nicks[newNick] = n
|
i.nicks[newNick] = n
|
||||||
n = self.getNick(irc, newNick)
|
n = self.getNick(irc, newNick, raw=True)
|
||||||
|
prefixNew = '%s!%s' % (newNick, msg.prefix.split('!')[1])
|
||||||
|
n.setPrefix(prefixNew)
|
||||||
n.addLog('ALL', '%s is now known as %s' % (oldNick, newNick))
|
n.addLog('ALL', '%s is now known as %s' % (oldNick, newNick))
|
||||||
best = None
|
best = None
|
||||||
patterns = getBestPattern(n, irc, self.registryValue(
|
patterns = getBestPattern(n, irc, self.registryValue(
|
||||||
@ -3774,8 +3765,9 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
n = None
|
n = None
|
||||||
nick = None
|
nick = None
|
||||||
if ircutils.isUserHostmask(msg.prefix):
|
if ircutils.isUserHostmask(msg.prefix):
|
||||||
nick = ircutils.nickFromHostmask(msg.prefix)
|
nick = msg.nick
|
||||||
n = self.getNick(irc, nick)
|
n = self.getNick(irc, nick, raw=True)
|
||||||
|
n.setPrefix(msg.prefix)
|
||||||
acc = msg.args[0]
|
acc = msg.args[0]
|
||||||
old = n.account
|
old = n.account
|
||||||
if acc == '*':
|
if acc == '*':
|
||||||
@ -3784,7 +3776,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
n.addLog('ALL', '%s is now identified as %s' % (old, acc))
|
n.addLog('ALL', '%s is now identified as %s' % (old, acc))
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
if n and n.account and n.ip and nick:
|
if nick and n and n.account and n.ip:
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
for channel in irc.state.channels:
|
for channel in irc.state.channels:
|
||||||
if self.registryValue('checkEvade', channel=channel, network=irc.network):
|
if self.registryValue('checkEvade', channel=channel, network=irc.network):
|
||||||
@ -3832,7 +3824,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
else:
|
else:
|
||||||
if msg.nick == irc.nick:
|
if msg.nick == irc.nick:
|
||||||
return
|
return
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
|
n.setPrefix(msg.prefix)
|
||||||
if 'account' in msg.server_tags:
|
if 'account' in msg.server_tags:
|
||||||
n.setAccount(msg.server_tags['account'])
|
n.setAccount(msg.server_tags['account'])
|
||||||
patterns = getBestPattern(n, irc, self.registryValue(
|
patterns = getBestPattern(n, irc, self.registryValue(
|
||||||
@ -3894,6 +3887,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
|
|
||||||
def _isVip(self, irc, channel, n):
|
def _isVip(self, irc, channel, n):
|
||||||
|
if not n.prefix:
|
||||||
|
return False
|
||||||
if n.prefix == irc.prefix:
|
if n.prefix == irc.prefix:
|
||||||
return 'me!'
|
return 'me!'
|
||||||
if ircdb.checkCapability(n.prefix, 'trusted'):
|
if ircdb.checkCapability(n.prefix, 'trusted'):
|
||||||
@ -3925,7 +3920,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
patterns = None
|
patterns = None
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
if ircutils.isUserHostmask(msg.prefix):
|
if ircutils.isUserHostmask(msg.prefix):
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
|
n.setPrefix(msg.prefix)
|
||||||
patterns = getBestPattern(n, irc, self.registryValue(
|
patterns = getBestPattern(n, irc, self.registryValue(
|
||||||
'useIpForGateway'), self.registryValue('resolveIp'))
|
'useIpForGateway'), self.registryValue('resolveIp'))
|
||||||
if len(patterns):
|
if len(patterns):
|
||||||
@ -4013,7 +4009,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
if isMatch:
|
if isMatch:
|
||||||
(m, p) = self.getIrcdMode(irc, isPattern.mode, best)
|
(m, p) = self.getIrcdMode(irc, isPattern.mode, best)
|
||||||
self._act(irc, channel, m, p, isPattern.duration,
|
self._act(irc, channel, m, p, isPattern.duration,
|
||||||
'matches #%s : %s' % (isPattern.uid, isMatch[1]), msg.nick)
|
'matches #%s: %s' % (isPattern.uid, isMatch[1]), msg.nick)
|
||||||
isBad = self._isBad(irc, channel, best)
|
isBad = self._isBad(irc, channel, best)
|
||||||
chan.countpattern(isPattern.uid, self.getDb(irc.network))
|
chan.countpattern(isPattern.uid, self.getDb(irc.network))
|
||||||
self.forceTickle = True
|
self.forceTickle = True
|
||||||
@ -4198,7 +4194,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
return
|
return
|
||||||
n = None
|
n = None
|
||||||
if ircutils.isUserHostmask(msg.prefix):
|
if ircutils.isUserHostmask(msg.prefix):
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
|
n.setPrefix(msg.prefix)
|
||||||
if 'account' in msg.server_tags:
|
if 'account' in msg.server_tags:
|
||||||
n.setAccount(msg.server_tags['account'])
|
n.setAccount(msg.server_tags['account'])
|
||||||
channel = msg.args[0]
|
channel = msg.args[0]
|
||||||
@ -4247,14 +4244,11 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
for channel in irc.state.channels:
|
for channel in irc.state.channels:
|
||||||
if b in irc.state.channels[channel].bans \
|
if b in irc.state.channels[channel].bans \
|
||||||
and mode in self.registryValue('kickMode', channel=channel, network=irc.network) \
|
and mode in self.registryValue('kickMode', channel=channel, network=irc.network) \
|
||||||
and not target.startswith('m:'):
|
and self.registryValue('kickOnMode', channel=channel, network=irc.network):
|
||||||
L = []
|
|
||||||
for nick in list(irc.state.channels[channel].users):
|
for nick in list(irc.state.channels[channel].users):
|
||||||
L.append(nick)
|
n = self.getNick(irc, nick)
|
||||||
for nick in L:
|
isVip = self._isVip(irc, channel, n)
|
||||||
isVip = self._isVip(irc, channel, self.getNick(irc, nick))
|
|
||||||
if not isVip:
|
if not isVip:
|
||||||
n = self.getNick(irc, nick)
|
|
||||||
m = match(target, n, irc, self.registryValue('resolveIp'))
|
m = match(target, n, irc, self.registryValue('resolveIp'))
|
||||||
if m:
|
if m:
|
||||||
if len(kicks) < self.registryValue('kickMax', channel=channel, network=irc.network):
|
if len(kicks) < self.registryValue('kickMax', channel=channel, network=irc.network):
|
||||||
@ -4274,7 +4268,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
if ircutils.isUserHostmask(msg.prefix):
|
if ircutils.isUserHostmask(msg.prefix):
|
||||||
# prevent server.netsplit to create a Nick
|
# prevent server.netsplit to create a Nick
|
||||||
n = self.getNick(irc, msg.nick)
|
n = self.getNick(irc, msg.nick, raw=True)
|
||||||
n.setPrefix(msg.prefix)
|
n.setPrefix(msg.prefix)
|
||||||
if 'account' in msg.server_tags:
|
if 'account' in msg.server_tags:
|
||||||
n.setAccount(msg.server_tags['account'])
|
n.setAccount(msg.server_tags['account'])
|
||||||
@ -4323,7 +4317,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
if item and len(item.affects):
|
if item and len(item.affects):
|
||||||
for affected in item.affects:
|
for affected in item.affects:
|
||||||
nick = affected.split('!')[0]
|
nick = affected.split('!')[0]
|
||||||
isVip = self._isVip(irc, channel, self.getNick(irc, nick))
|
n = self.getNick(irc, msg.nick)
|
||||||
|
isVip = self._isVip(irc, channel, n)
|
||||||
if isVip:
|
if isVip:
|
||||||
continue
|
continue
|
||||||
if m in self.registryValue('modesToAsk', channel=channel, network=irc.network) \
|
if m in self.registryValue('modesToAsk', channel=channel, network=irc.network) \
|
||||||
@ -4335,8 +4330,7 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
if len(items):
|
if len(items):
|
||||||
for active in items:
|
for active in items:
|
||||||
active = items[active]
|
active = items[active]
|
||||||
if match(active.value, self.getNick(irc, nick),
|
if match(active.value, n, irc, self.registryValue('resolveIp')):
|
||||||
irc, self.registryValue('resolveIp')):
|
|
||||||
tolift.append(active)
|
tolift.append(active)
|
||||||
kicked = False
|
kicked = False
|
||||||
# and not value.startswith(self.getIrcdExtbans(irc)) works for unreal
|
# and not value.startswith(self.getIrcdExtbans(irc)) works for unreal
|
||||||
@ -4410,8 +4404,8 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
if nick in irc.state.channels[channel].voices:
|
if nick in irc.state.channels[channel].voices:
|
||||||
chan.queue.enqueue(('-v', nick))
|
chan.queue.enqueue(('-v', nick))
|
||||||
if m in self.registryValue('kickMode', channel=channel, network=irc.network) \
|
if m in self.registryValue('kickMode', channel=channel, network=irc.network) \
|
||||||
and not value.startswith('m:') and self.registryValue(
|
and self.registryValue('kickOnMode', channel=channel, network=irc.network) \
|
||||||
'kickOnMode', channel=channel, network=irc.network):
|
and not value.startswith('m:'):
|
||||||
self.hasExtendedSharedBan(irc, channel, value, m)
|
self.hasExtendedSharedBan(irc, channel, value, m)
|
||||||
# bot just got op
|
# bot just got op
|
||||||
if m == 'o' and value == irc.nick:
|
if m == 'o' and value == irc.nick:
|
||||||
@ -4583,16 +4577,15 @@ class ChanTracker(callbacks.Plugin, plugins.ChannelDBHandler):
|
|||||||
def do478(self, irc, msg):
|
def do478(self, irc, msg):
|
||||||
# message when ban list is full after adding something to eqIb list
|
# message when ban list is full after adding something to eqIb list
|
||||||
(nick, channel, ban, info) = msg.args
|
(nick, channel, ban, info) = msg.args
|
||||||
if self.registryValue('logChannel', channel=channel, network=irc.network) in irc.state.channels:
|
logChannel = self.registryValue('logChannel', channel=channel, network=irc.network)
|
||||||
L = []
|
if logChannel in irc.state.channels:
|
||||||
for user in list(irc.state.channels[self.registryValue('logChannel', channel=channel, network=irc.network)].users):
|
ops = list(irc.state.channels[logChannel].users)
|
||||||
L.append(user)
|
|
||||||
if self.registryValue('useColorForAnnounces', channel=channel, network=irc.network):
|
if self.registryValue('useColorForAnnounces', channel=channel, network=irc.network):
|
||||||
self._logChannel(irc, channel, '[%s] %s : %s' % (ircutils.bold(
|
self._logChannel(irc, channel, '[%s] %s: %s' % (ircutils.bold(
|
||||||
channel), ircutils.bold(ircutils.mircColor(info, 'red')), ' '.join(L)))
|
channel), ircutils.bold(ircutils.mircColor(info, 'red')), ' '.join(ops)))
|
||||||
else:
|
else:
|
||||||
self._logChan(irc, channel, '[%s] %s : %s' % (
|
self._logChan(irc, channel, '[%s] %s: %s' % (
|
||||||
channel, info, ' '.join(L)))
|
channel, info, ' '.join(ops)))
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
|
|
||||||
# protection features
|
# protection features
|
||||||
|
Loading…
x
Reference in New Issue
Block a user