Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import time
- import _thread as thread
- import sqlite3
- from socket import *
- #####################################
- IRCHOST = 'xs4all.nl.quakenet.org'
- IRCPORT = 6667
- IRCUSER = 'pl3kbot * * : bestaboteva'
- IRCNICK = 'botbotbotbotbot'
- IRCchannel = '#supertest'
- #####################################
- joined_channel = False
- def timestamp():
- """Gibt einen String mit der Aktuellen Zeit zurück"""
- zeit = time.localtime()
- """(Jahr - Monat - Tag- Stunde - Minute - Sekunde)"""
- zeitstring = str(zeit[3])+":"+str(zeit[4])+":"+str(zeit[5])+" "+str(zeit[2])+"."+str(zeit[1])+"."+str(+zeit[0])
- return zeitstring
- def konsolen_ausgabe(nachricht):
- zeit = timestamp()
- print(zeit, nachricht)
- def datenbank_verlauf(nick, nachricht, event):
- if event == "leave":
- pass
- elif event == "join":
- pass
- elif event == "send":
- pass
- def pingpong(message):
- # Antwortet auf den Ping
- pong = message.split(":")
- con.send("PONG :" + pong[1])
- # Überprüft die eingegangenen nachrichten und verarbeitet diese weiter
- def controller(message):
- # Globale Variable Importieren
- global joined_channel
- konsolen_ausgabe(message)
- # Überprüft auf PING
- if message.startswith("PING :"):
- pingpong(message)
- #Überprüft auf authentifizierung und joined dem channel
- if joined_channel == False:
- if message.split(" ")[1].startswith("221"):
- con.send("JOIN " + IRCchannel)
- if message.split(" ")[1].startswith("353"):
- joined_channel = True
- # Checkt ob jemand joined oder leaved
- if message.startswith(":") and message.find("QUIT") != -1:
- nick = message.split("!")[0][1:]
- datenbank_verlauf(nick, "CHANNEL VERLASSEN", "leave")
- if message.startswith(":") and message.find("JOIN") != -1:
- nick = message.split("!")[0][1:]
- datenbank_verlauf(nick, "CHANNEL BETRETEN", "join")
- # Prüft ob ein User etwas geschrieben hat
- if message.find("PRIVMSG") != -1:
- #Extrahiert den Nick aus der message
- nick = message.split("!")[0][1:]
- #Extrahiert die Nachricht aus der message
- nachricht = message.split("PRIVMSG")[1].split(":", maxsplit=1)[1]
- #Schickt die nachricht an die Verlaufmethode
- datenbank_verlauf(nick, nachricht, "send")
- #Überprüft ob der Bot angesprochen wurde
- if nachricht.find(IRCNICK) != -1:
- con.send("PRIVMSG {} :LASS MICH IN RUHE {} !!!".format(IRCchannel, nick))
- class connection:
- # Konstruktor
- def __init__(self, ho, po, us, ni):
- self.HOST = str(ho)
- self.PORT = int(po)
- self.USER = str(us)
- self.NICK = str(ni)
- # Socket Objekt erstellen
- self.s = socket(AF_INET, SOCK_STREAM)
- # Dateireferenz vom Socket erstellen
- self.fs = self.s.makefile("rw")
- # Verbindung Herstellen
- def connect(self):
- # Socket verbinden
- self.s.connect((self.HOST, self.PORT))
- # Beim Server anmelden
- self.fs.write("PASS " + str(random.random()) + "\n")
- self.fs.write("USER " + self.USER + "\n")
- self.fs.write("NICK " + self.NICK + "\n")
- self.fs.flush()
- def receive(self):
- while True:
- # sendet die empfangenen daten an die controller methode
- # ohne escape sequenz
- message = self.fs.readline()[:-1]
- controller(message)
- def send(self, nachricht):
- try:
- self.fs.write(nachricht + "\n")
- self.fs.flush()
- except:
- print("Fehler beim senden der Nachricht!")
- con = connection(IRCHOST, IRCPORT, IRCUSER, IRCNICK)
- con.connect()
- thread.start_new_thread(con.receive,()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement