bam/bam.py
2022-02-14 10:34:03 -07:00

55 lines
1.4 KiB
Python

import asyncio, time
from irctokens import build, Line
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
class Server(BaseServer):
def __init__(self, bot, name):
super().__init__(bot, name)
self.log={}
async def line_read(self, line):
print(f"{self.name} < {line.format()}")
if "on_" + line.command.lower() in dir(self):
asyncio.create_task(
self.__getattribute__("on_" + line.command.lower())(line)
)
async def line_send(self, line):
print(f"{self.name} > {line.format()}")
async def on_001(self, line):
await self.send_raw(OPER)
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].pop(0)
class Bot(BaseBot):
def create_server(self, name: str):
return Server(self, name)
async def main():
bot = Bot()
params = ConnectionParams(NICK, host=HOST, port=6697, autojoin=JOIN)
await bot.add_server(NETWORK, params)
await bot.run()
if __name__ == "__main__":
asyncio.run(main())