This commit is contained in:
Your Name 2023-11-02 19:17:12 +03:00
parent b29ae43dd6
commit 66599bc6bd
6 changed files with 97 additions and 8 deletions

1
Python/README.md Normal file
View file

@ -0,0 +1 @@
Delete me

55
Python/irc.py Normal file
View file

@ -0,0 +1,55 @@
import socket
import time
import sys
class IRC:
def __init__(self, channel, code):
self.channel = channel
self.sock = socket.socket()
self.code = code
self.sender = {"ip":"", "nickname":""}
self.data = {"type":""}
def connect(self, host, nick):
self.sock.connect(host)
self.sock.send(f"USER {nick} 0 0 {nick}\r\n".encode(self.code))
self.sock.send(f"NICK {nick}\r\n".encode(self.code))
time.sleep(7)
self.sock.send(f"JOIN {self.channel}\r\n".encode(self.code))
def recv(self, size):
try:
data = self.sock.recv(size).decode()
except UnicodeDecodeError:
return None
if len(data) == 0:
self.sock.close()
raise BrokenPipeError("Disconnected")
if "PING" in data.split(":")[0]:
self.sock.send(f"PONG {data.split()[-1]}\r\n".encode())
return data
def parser(self, data):
data = data.split(" ", 3)
self.sender["ip"] = data[0].split("@", 1)[-1]
self.sender["nickname"] = data[0].split("!", 1)[0][1:]
if data[1] == "PRIVMSG":
self.data["channel"] = data[2]
self.data["msg"] = data[-1][1:].strip()
self.data["type"] = "PRIVMSG"
elif data[1] == "JOIN":
self.data["type"] = "JOIN"
elif data[1] == "PART":
self.data["type"] = "PART"
def sendMSG(self, msg, channel):
self.sock.send(f"PRIVMSG {channel} :{msg}\r\n".encode(self.code))
def sendRAW(self, msg):
self.sock.send(f"{msg}\r\n".encode(self.code))

28
Python/main.py Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/python3
import sys
import time
from irc import IRC
def main():
main = IRC("#mainchannel", "cp1251")
main.connect(("irc..ru", 6667), "tester")
while True:
data = main.recv(512)
if data is None:
continue
main.parser(data)
print(main.sender)
print(main.data)
if __name__ == "__main__":
while True:
try:
main()
except KeyboardInterrupt:
break
except:
pass