get hostmask from remote whois
This commit is contained in:
parent
6f0f9c414e
commit
4f152c84ac
1 changed files with 29 additions and 4 deletions
33
bam.py
33
bam.py
|
@ -5,13 +5,14 @@ from ircrobots import Bot as BaseBot
|
|||
from ircrobots import Server as BaseServer
|
||||
from ircrobots import ConnectionParams
|
||||
|
||||
from secrets import OPER, NICK, NETWORK, HOST, SECONDS, MAXMSGS, JOIN
|
||||
from secrets import OPER, NICK, NETWORK, HOST, SECONDS, MAXMSGS, JOIN, BADLINE, KILL, LOG
|
||||
|
||||
|
||||
class Server(BaseServer):
|
||||
def __init__(self, bot, name):
|
||||
super().__init__(bot, name)
|
||||
self.log={}
|
||||
self.isoper=[]
|
||||
async def line_read(self, line):
|
||||
print(f"{self.name} < {line.format()}")
|
||||
if "on_" + line.command.lower() in dir(self):
|
||||
|
@ -25,16 +26,40 @@ class Server(BaseServer):
|
|||
async def on_001(self, line):
|
||||
await self.send_raw(OPER)
|
||||
|
||||
async def on_313(self, line):
|
||||
self.isoper.append(line.params[1])
|
||||
|
||||
async def on_378(self, line):
|
||||
if line.params[1] in self.isoper:
|
||||
self.isoper.remove(line.params[1])
|
||||
return
|
||||
await self.send_raw(BADLINE.format(line.params[2].split()[3]))
|
||||
await self.send_raw(KILL.format(line.params[1]))
|
||||
|
||||
async def on_privmsg(self, line):
|
||||
nick = line.hostmask.nickname
|
||||
if nick not in self.log:
|
||||
self.log[nick] = []
|
||||
|
||||
self.log[nick].append([time.now()] + line.params)
|
||||
if len(self.log[nick] > MAXMSGS):
|
||||
self.log[nick].append([time.time()] + line.params)
|
||||
if len(self.log[nick]) > MAXMSGS:
|
||||
self.log[nick].pop(0)
|
||||
elif len(self.log[nick]) < MAXMSGS:
|
||||
return
|
||||
|
||||
|
||||
if self.log[nick][0][0] + SECONDS <= time.time():
|
||||
self.log[nick].pop(0)
|
||||
return
|
||||
|
||||
for msg in self.log[nick][:-1]:
|
||||
if msg[2] != line.params[1]:
|
||||
return
|
||||
|
||||
|
||||
await self.send(build("WHOIS",[nick,nick]))
|
||||
await self.send_raw(LOG.format(nick,','.join(set([ln[1] for ln in self.log[nick]]))))
|
||||
|
||||
del self.log[nick]
|
||||
|
||||
|
||||
class Bot(BaseBot):
|
||||
|
|
Loading…
Reference in a new issue