simple base

This commit is contained in:
randomuser 2021-08-02 20:31:20 -05:00
parent abf7a60816
commit a96019ca07
1 changed files with 78 additions and 0 deletions

78
main.py Normal file
View File

@ -0,0 +1,78 @@
#!/usr/bin/env python3
import asyncio
from importlib import import_module as mod_include
from irctokens import build, Line
from ircrobots import Bot as BaseBot
from ircrobots import Server as BaseServer
from ircrobots import ConnectionParams
SERVERS = [
("beep", "beepboop.systems")
]
EVENTS = [
"cmd",
"privmsg",
"topic",
"mode",
"kick",
"join",
"part",
"invite",
]
PREFIX = '*'
class Server(BaseServer):
handlers = {i: [] for i in EVENTS}
states = {}
async def line_read(self, line: Line):
print(f"{self.name} < {line.format()}")
if line.command == "001":
await self.send(build("JOIN", ["#testchannel"]))
self.load_mod("test")
self.load_mod("test2")
self.event_handle(line)
def load_mod(self, name):
mod = mod_include(name)
for i in EVENTS:
if hasattr(mod, i):
self.handlers[i].append(getattr(mod, i))
self.states[name] = None
def event_get(self, line: Line):
if line.command.lower() in EVENTS[2:]:
return line.command.lower()
elif line.command.lower() == "privmsg":
if line.params[1][0] == PREFIX: return "cmd"
else: return "privmsg"
else:
# something has gone horribly, horribly wrong
return None
def event_handle(self, line: Line):
event = self.event_get(line)
if event == None: return False
try:
for i in self.handlers[event]:
i(line)
except IndexError: return False
return True
async def line_send(self, line: Line):
print(f"{self.name} > {line.format()}")
class Bot(BaseBot):
def create_server(self, name: str):
return Server(self, name)
async def main():
bot = Bot()
for name, host in SERVERS:
params = ConnectionParams("BitBotNewTest", host, 6667, False)
await bot.add_server(name, params)
await bot.run()
if __name__ == "__main__":
asyncio.run(main())