Implement counting of various IRC events
This commit is contained in:
16
core/bot.py
16
core/bot.py
@@ -4,6 +4,7 @@ from twisted.internet.defer import Deferred
|
||||
|
||||
import modules.keyword as keyword
|
||||
import modules.userinfo as userinfo
|
||||
import modules.counters as count
|
||||
|
||||
from core.main import *
|
||||
from utils.logging.log import *
|
||||
@@ -66,18 +67,21 @@ class IRCBot(IRCClient):
|
||||
def privmsg(self, user, channel, msg):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "privmsg")
|
||||
|
||||
keyword.actKeyword(user, channel, msg, self.nickname, "PRV", self.name)
|
||||
|
||||
def noticed(self, user, channel, msg):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "notice")
|
||||
|
||||
keyword.actKeyword(user, channel, msg, self.nickname, "NOT", self.name)
|
||||
|
||||
def action(self, user, channel, msg):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "action")
|
||||
|
||||
keyword.actKeyword(user, channel, msg, self.nickname, "ACT", self.name)
|
||||
|
||||
@@ -126,6 +130,7 @@ class IRCBot(IRCClient):
|
||||
return
|
||||
n = self._who[channel][1]
|
||||
n[nick] = [nick, user, host, server, status, realname]
|
||||
count.event(self.name, "whoreply")
|
||||
|
||||
def irc_RPL_ENDOFWHO(self, prefix, params):
|
||||
channel = params[1]
|
||||
@@ -148,38 +153,46 @@ class IRCBot(IRCClient):
|
||||
self.msg(self.authentity, "IDENTIFY %s" % self.nspass)
|
||||
for i in self.autojoin:
|
||||
self.join(i)
|
||||
count.event(self.name, "signedon")
|
||||
|
||||
def joined(self, channel):
|
||||
if not channel in self.channels:
|
||||
self.channels.append(channel)
|
||||
self.who(channel).addCallback(self.got_who)
|
||||
count.event(self.name, "selfjoin")
|
||||
|
||||
def left(self, channel):
|
||||
if channel in self.channels:
|
||||
self.channels.remove(channel)
|
||||
count.event(self.name, "selfpart")
|
||||
|
||||
def kickedFrom(self, channel, kicker, message):
|
||||
if channel in self.channels:
|
||||
self.channels.remove(channel)
|
||||
keyword.sendMaster("KICK %s: (%s/%s) %s" % (self.name, kicker, channel, message))
|
||||
count.event(self.name, "selfkick")
|
||||
|
||||
def userJoined(self, user, channel):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "join")
|
||||
|
||||
def userLeft(self, user, channel):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "part")
|
||||
|
||||
def userQuit(self, user, quitMessage):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "quit")
|
||||
|
||||
keyword.actKeyword(user, None, quitMessage, self.nickname, "QUT", self.name)
|
||||
|
||||
def userKicked(self, kickee, channel, kicker, message):
|
||||
nick, ident, host = self.parsen(kicker)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "kick")
|
||||
|
||||
keyword.actKeyword(kicker, channel, message, self.nickname, "KCK", self.name)
|
||||
|
||||
@@ -187,16 +200,19 @@ class IRCBot(IRCClient):
|
||||
nick, ident, host = self.parsen(oldname)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
userinfo.setWhoSingle(self.name, newname, ident, host)
|
||||
count.event(self.name, "nick")
|
||||
|
||||
def topicUpdated(self, user, channel, newTopic):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "topic")
|
||||
|
||||
keyword.actKeyword(user, channel, newTopic, self.nickname, "TOP", self.name)
|
||||
|
||||
def modeChanged(self, user, channel, toset, modes, args):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "mode")
|
||||
|
||||
class IRCBotFactory(ReconnectingClientFactory):
|
||||
def __init__(self, name):
|
||||
|
||||
@@ -11,6 +11,7 @@ filemap = {
|
||||
"pool": ["pool.json", "pool"],
|
||||
"help": ["help.json", "command help"],
|
||||
"wholist": ["wholist.json", "WHO lists"],
|
||||
"counters": ["counters.json", "counters file"],
|
||||
}
|
||||
|
||||
numbers = "0123456789"
|
||||
@@ -28,7 +29,7 @@ CommandMap = {}
|
||||
def register(command, function):
|
||||
if not command in CommandMap:
|
||||
CommandMap[command] = function
|
||||
log("Registering command %s" % command)
|
||||
debug("Registered command: %s" % command)
|
||||
else:
|
||||
error("Duplicate command: %s" % (command))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user