fix
This commit is contained in:
parent
b29ae43dd6
commit
66599bc6bd
6 changed files with 97 additions and 8 deletions
1
Python/README.md
Normal file
1
Python/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
Delete me
|
55
Python/irc.py
Normal file
55
Python/irc.py
Normal 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
28
Python/main.py
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue