relay

Log | Files | Refs

commit b2162be109c72ee94ecdd306a6c93d72f526e8c7
Author: lickthecheese <lickthecheese@linuxmail.org>
Date:   Mon,  5 Oct 2020 19:34:39 -0400

functional!!!!!!!!!!!!

Diffstat:
Abot.py | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+), 0 deletions(-)

diff --git a/bot.py b/bot.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import asyncio + +from irctokens import build, Line +from ircrobots import Bot as BaseBot +from ircrobots import Server as BaseServer +from ircrobots import ConnectionParams + +SERVERS = [ + ("freenode", "chat.freenode.net"), + ("tilde", "irc.tilde.chat"), + ("technet","mercury.technet.xi.ht"), + #("vulpineawoo","irc.wppnx.pii.at"), +] + +class Server(BaseServer): + async def line_read(self, line: Line): + print(f"{self.name} < {line.format()}") + if line.command == "001": + print(f"connected to {self.isupport.network}") + self.chan = "##xfnw" if self.name == "freenode" else "#xfnw" + await self.send(build("JOIN", [self.chan])) + if line.command == "PRIVMSG" and line.params.pop(0) == self.chan: + text = line.params[0] + nick = line.source.split('!')[0] + if nick == self.nickname or line.tags and "batch" in line.tags: + return + for i in self.bot.servers: + await self.bot.servers[i].bc(self.name,nick,text) + #await self.send(build("PRIVMSG ##xfnw :ine and boat ",[text])) + if line.command == "INVITE": + await self.send(build("JOIN",[line.params[1]])) + async def line_send(self, line: Line): + print(f"{self.name} > {line.format()}") + async def bc(self,name,nick,msg): + if name == self.name: + return + await self.send(build("PRIVMSG",[self.chan,"<"+nick+"@"+name+"> "+msg])) + +class Bot(BaseBot): + def create_server(self, name: str): + return Server(self, name) + +bot = 0 +async def main(): + bot = Bot() + for name, host in SERVERS: + params = ConnectionParams("xfnwRelay", host, 6697, True) + await bot.add_server(name, params) + + await bot.run() + +if __name__ == "__main__": + asyncio.run(main())