init
This commit is contained in:
		
							
								
								
									
										8
									
								
								config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								config.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
    "deek_user": "YOUR_USERNAME_HERE",
 | 
			
		||||
    "deek_passwd": "YOUR_PASSWORD_HERE",
 | 
			
		||||
    "irc_serb": "irc.rizon.net",
 | 
			
		||||
    "irc_port": 7000,
 | 
			
		||||
    "irc_nick": "birdbridge",
 | 
			
		||||
    "irc_chan": "#birdchat"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								ircked
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								ircked
									
									
									
									
									
										Submodule
									
								
							 Submodule ircked added at 8882553144
									
								
							
							
								
								
									
										77
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
import requests, websockets, asyncio, json, re, threading, time
 | 
			
		||||
from ircked.bot import irc_bot
 | 
			
		||||
from ircked.message import *
 | 
			
		||||
 | 
			
		||||
class bird_inst():
 | 
			
		||||
    def __init__(self, endpoint, httpendpoint, config):
 | 
			
		||||
        self.endpoint = endpoint
 | 
			
		||||
        self.httpendpoint = httpendpoint
 | 
			
		||||
        self.config = config
 | 
			
		||||
        self.ws = None
 | 
			
		||||
        self.headers = None
 | 
			
		||||
        self.irc = irc_bot(nick=self.config["irc_nick"])
 | 
			
		||||
        self.irc.connect_register(self.config["irc_serb"], self.config["irc_port"])
 | 
			
		||||
 | 
			
		||||
        def irc_handler(msg, ctx):
 | 
			
		||||
            #print("<><><><>", str(msg))
 | 
			
		||||
            if msg.command == "PING":
 | 
			
		||||
                message.manual("", "PONG", msg.parameters).send(ctx.socket)
 | 
			
		||||
            elif msg.command == "001":
 | 
			
		||||
                message.manual("", "JOIN", [self.config["irc_chan"]]).send(ctx.socket)
 | 
			
		||||
            elif msg.command == "PRIVMSG" and "\x01VERSION\x01" in msg.parameters:
 | 
			
		||||
                message.manual(":"+msg.parameters[0], "PRIVMSG", [msg.prefix[1:].split("!")[0], ":\x01dorfl bot\x01"]).send(ctx.socket)
 | 
			
		||||
            if msg.command == "PRIVMSG" and ("py-ctcp" not in msg.prefix):
 | 
			
		||||
                pm = privmsg.parse(msg)
 | 
			
		||||
                self.send_post(pm.fr+": "+pm.bod)
 | 
			
		||||
        threading.Thread(target=self.irc.run, kwargs={"event_handler": irc_handler}, daemon=True).start()
 | 
			
		||||
    def auth(self, name, passwd):
 | 
			
		||||
        h = {
 | 
			
		||||
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0",
 | 
			
		||||
            "Origin": "https://deekchat.ml", 
 | 
			
		||||
            "DNT": "1",
 | 
			
		||||
        }
 | 
			
		||||
        res = requests.post(self.httpendpoint+"/login/submit", headers=h, data={"name": name, "password": passwd, "submit": "log+in"}, allow_redirects=False)
 | 
			
		||||
        token = re.search("(?:api_token)=[^;]+", res.headers.get("Set-Cookie")).group(0)
 | 
			
		||||
        sessid = re.search("(?:session_id)=[^;]+", res.headers.get("Set-Cookie")).group(0)
 | 
			
		||||
        h["Cookie"] = token+"; "+sessid
 | 
			
		||||
        self.headers = h
 | 
			
		||||
    async def run(self):
 | 
			
		||||
        print("running main loop")
 | 
			
		||||
        async with websockets.connect(self.endpoint, extra_headers=self.headers) as self.ws:
 | 
			
		||||
            print(self.ws)
 | 
			
		||||
            while True:
 | 
			
		||||
                data = json.loads(await self.ws.recv())
 | 
			
		||||
                print(">>>", data)
 | 
			
		||||
                try: getattr(self, "handle_"+data["type"], None)(data)
 | 
			
		||||
                except Exception as e: print("hey buddy your shits fucked thought you might want to know", e)
 | 
			
		||||
    def handle_message(self, ctx):
 | 
			
		||||
        print("btw i just got this", ctx["data"]["message"])
 | 
			
		||||
        self.irc.sendraw(privmsg.build(self.config["irc_nick"], self.config["irc_chan"], ctx["name"]+": "+ctx["data"]["message"]).msg)
 | 
			
		||||
    def handle_avatar(self, ctx): pass
 | 
			
		||||
    def handle_files(self, ctx):
 | 
			
		||||
        self.irc.sendraw(privmsg.build(self.config["irc_nick"], self.config["irc_chan"], ctx["name"]+": "+ctx["data"]["message"]).msg)
 | 
			
		||||
        for f in ctx["data"]["files"]:
 | 
			
		||||
            self.irc.sendraw(privmsg.build(self.config["irc_nick"], self.config["irc_chan"], f"({ctx['name']} uploaded file: {self.httpendpoint}/{f['name']}").msg)
 | 
			
		||||
    def handle_exit(self, ctx): pass
 | 
			
		||||
    def handle_enter(self, ctx): pass
 | 
			
		||||
    def handle_userLoaded(self, ctx): pass
 | 
			
		||||
    def send_post(self, msg):
 | 
			
		||||
        if self.ws is None: return
 | 
			
		||||
        print(msg)
 | 
			
		||||
        #loop = asyncio.new_event_loop()
 | 
			
		||||
        #asyncio.set_event_loop(loop)
 | 
			
		||||
        #loop.create_task(self.send_post(pm.bod))
 | 
			
		||||
        #loop.run_forever()
 | 
			
		||||
        #pass#await self.ws.send(json.dumps({"type": "message", "message": msg}))
 | 
			
		||||
 | 
			
		||||
cfg = json.loads(open("config.json", "r").read())
 | 
			
		||||
bi = bird_inst("wss://deekchat.ml/ws", "https://deekchat.ml", cfg)
 | 
			
		||||
print("yes hello birdchat here")
 | 
			
		||||
bi.auth(cfg["deek_user"], cfg["deek_passwd"])
 | 
			
		||||
while True:
 | 
			
		||||
    try: asyncio.run(bi.run())
 | 
			
		||||
    except KeyboardInterrupt:
 | 
			
		||||
        break
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        print(e)
 | 
			
		||||
        continue
 | 
			
		||||
							
								
								
									
										1
									
								
								readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								readme.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
deekchat<->IRC bridge
 | 
			
		||||
		Reference in New Issue
	
	Block a user