1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #!/usr/bin/python3
- import socket, asyncio, time, re, ssl, ircstates, importlib
- from config import *
- import shared
- Parse = importlib.import_module('parse')
- def _send(msg: str, log=True):
- shared.sock.send(f"{msg}\n".encode('utf-8'))
- if log == True: print(f"> {msg}")
- if __name__ == '__main__':
- srv = ircstates.Server(NETNAME)
- shared.sock = socket.socket()
- ctx = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)
- if tls == True:
- shared.sock = ctx.wrap_socket(shared.sock)
- shared.sock.connect((HOST, PORT))
- _send(f"NICK {NICK}")
- _send(f"USER {NICK} 0 * :{REALNAME}")
- try:
- while True:
- recv_data = shared.sock.recv(1024)
- recv_lines = srv.recv(recv_data)
- for line in recv_lines:
- srv.parse_tokens(line)
- if line.command == 'PRIVMSG':
- if line.params[1] == '%reload':
- if Parse.is_admin(line.source):
- oldprs = Parse
- try:
- prs = importlib.reload(Parse)
- Parse = prs
- except Exception as e:
- _send(f"PRIVMSG {line.source.split('!')[0]} :Error reloading: Exception({e})")
- Parse = oldprs
- Parse.Parse(_send=_send, srv=srv, line=line)
- except KeyboardInterrupt: _send("QUIT :^C")
|