Implement monitoring system for flexible metadata matching
This commit is contained in:
19
core/bot.py
19
core/bot.py
@@ -5,6 +5,7 @@ from twisted.internet.defer import Deferred
|
||||
import modules.keyword as keyword
|
||||
import modules.userinfo as userinfo
|
||||
import modules.counters as count
|
||||
import modules.monitor as monitor
|
||||
|
||||
import main
|
||||
from utils.logging.log import *
|
||||
@@ -70,6 +71,7 @@ class IRCBot(IRCClient):
|
||||
count.event(self.name, "privmsg")
|
||||
|
||||
keyword.actKeyword(user, channel, msg, self.nickname, "MSG", self.name)
|
||||
monitor.event(self.name, channel, {"type": "msg", "exact": user, "nick": nick, "ident": ident, "host": host, "message": msg})
|
||||
|
||||
def noticed(self, user, channel, msg):
|
||||
nick, ident, host = self.parsen(user)
|
||||
@@ -77,6 +79,7 @@ class IRCBot(IRCClient):
|
||||
count.event(self.name, "notice")
|
||||
|
||||
keyword.actKeyword(user, channel, msg, self.nickname, "NOTICE", self.name)
|
||||
monitor.event(self.name, channel, {"type": "notice", "exact": user, "nick": nick, "ident": ident, "host": host, "message": msg})
|
||||
|
||||
def action(self, user, channel, msg):
|
||||
nick, ident, host = self.parsen(user)
|
||||
@@ -84,6 +87,7 @@ class IRCBot(IRCClient):
|
||||
count.event(self.name, "action")
|
||||
|
||||
keyword.actKeyword(user, channel, msg, self.nickname, "ACTION", self.name)
|
||||
monitor.event(self.name, channel, {"type": "action", "exact": user, "nick": nick, "ident": ident, "host": host, "message": msg})
|
||||
|
||||
def get(self, var):
|
||||
try:
|
||||
@@ -241,25 +245,32 @@ class IRCBot(IRCClient):
|
||||
def left(self, channel, message):
|
||||
if channel in self.channels:
|
||||
self.channels.remove(channel)
|
||||
keyword.actKeyword(user, channel, message, self.nickname, "SELFPART", self.name)
|
||||
keyword.actKeyword(self.nickname, channel, message, self.nickname, "SELFPART", self.name)
|
||||
count.event(self.name, "selfpart")
|
||||
monitor.event(self.name, channel, {"type": "part", "message": message})
|
||||
|
||||
def kickedFrom(self, channel, kicker, message):
|
||||
nick, ident, host = self.parsen(kicker)
|
||||
print(kicker)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
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")
|
||||
monitor.event(self.name, channel, {"type": "kick", "exact": kicker, "nick": nick, "ident": ident, "host": host, "message": message})
|
||||
|
||||
def userJoined(self, user, channel):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
count.event(self.name, "join")
|
||||
monitor.event(self.name, channel, {"type": "join", "exact": user, "nick": nick, "ident": ident, "host": host})
|
||||
|
||||
def userLeft(self, user, channel, message):
|
||||
nick, ident, host = self.parsen(user)
|
||||
userinfo.setWhoSingle(self.name, nick, ident, host)
|
||||
keyword.actKeyword(user, channel, message, self.nickname, "PART", self.name)
|
||||
count.event(self.name, "part")
|
||||
monitor.event(self.name, channel, {"type": "part", "exact": user, "nick": nick, "ident": ident, "host": host, "message": message})
|
||||
|
||||
def userQuit(self, user, quitMessage):
|
||||
nick, ident, host = self.parsen(user)
|
||||
@@ -267,6 +278,7 @@ class IRCBot(IRCClient):
|
||||
count.event(self.name, "quit")
|
||||
|
||||
keyword.actKeyword(user, None, quitMessage, self.nickname, "QUIT", self.name)
|
||||
monitor.event(self.name, None, {"type": "quit", "exact": user, "nick": nick, "ident": ident, "host": host, "message": quitMessage})
|
||||
|
||||
def userKicked(self, kickee, channel, kicker, message):
|
||||
nick, ident, host = self.parsen(kicker)
|
||||
@@ -274,12 +286,14 @@ class IRCBot(IRCClient):
|
||||
count.event(self.name, "kick")
|
||||
|
||||
keyword.actKeyword(kicker, channel, message, self.nickname, "KICK", self.name)
|
||||
monitor.event(self.name, channel, {"type": "kick", "exact": kicker, "nick": nick, "ident": ident, "host": host, "message": message, "user": kickee})
|
||||
|
||||
def userRenamed(self, oldname, newname):
|
||||
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")
|
||||
monitor.event(self.name, None, {"type": "nick", "exact": oldname, "nick": nick, "ident": ident, "host": host, "user": newname})
|
||||
|
||||
def topicUpdated(self, user, channel, newTopic):
|
||||
nick, ident, host = self.parsen(user)
|
||||
@@ -287,11 +301,14 @@ class IRCBot(IRCClient):
|
||||
count.event(self.name, "topic")
|
||||
|
||||
keyword.actKeyword(user, channel, newTopic, self.nickname, "TOPIC", self.name)
|
||||
monitor.event(self.name, channel, {"type": "topic", "exact": user, "nick": nick, "ident": ident, "host": host, "message": newTopic})
|
||||
|
||||
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")
|
||||
print("%s // %s // %s" % (toset, modes, args))
|
||||
#monitor.event(self.name, channel, {"type": "topic", "exact": user, "nick": nick, "ident": ident, "host": host, "message": newTopic})
|
||||
|
||||
class IRCBotFactory(ReconnectingClientFactory):
|
||||
def __init__(self, name):
|
||||
|
||||
Reference in New Issue
Block a user