1
0
Fork 0

initial commit

This commit is contained in:
fanir 2014-02-27 12:05:38 +01:00
commit cb46a86567

142
main.py Executable file
View file

@ -0,0 +1,142 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# main.py
#
# Copyright 2014 Fanir <projects@mail.fanir.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
#
import sys
import socket
import string
class pircbot():
def encode(self, textstring):
for codec in self.encodings:
try: return textstring.encode(codec)
except UnicodeDecodeError: continue
return textstring.encode(self.encodings[0], 'ignore')
def decode(self, textstring):
for codec in self.encodings:
try: return textstring.decode(codec)
except UnicodeDecodeError: continue
return textstring.decode(self.encodings[0], 'ignore')
connected = False
def __init__(self, nicknames, server, port=6667, ident="pircbot", realname="pircbot", encodings=("utf-8", "latin-1")):
self.nicknames = nicknames
self.server = server
self.port = port
self.ident = ident
self.realname = realname
self.encodings = encodings
def connect(self):
s=socket.socket( )
try:
s.connect((self.server, self.port))
except socket.error as e:
print("Fehler: %s" % e)
return
s.send(self.encode("NICK %s\r\n" % self.nicknames[0]))
s.send(self.encode("USER %s %s bla :%s\r\n" % (self.ident, self.server, self.realname)))
self.connected = True
readbuffer=""
while 1:
readbuffer=readbuffer+self.decode(s.recv(1024))
temp=readbuffer.split("\n")
readbuffer=temp.pop( )
for line in temp:
line=line.rstrip()
line=line.split(" ")
if(line[0]=="PING"):
s.send(self.encode("PONG %s\r\n" % line[1]))
else:
print(" ".join(line))
def quit(self, reason=""):
pass
def join(self, channel):
pass
def part(self, channel):
pass
def startbot():
bot = pircbot(nicknames=(NICKNAME, ALT_NICKNAME), server=SERVER, port=PORT,
ident=IDENT, realname=REALNAME, encodings=ENCODINGS)
bot.connect()
bot.quit()
def parseargs():
"""
Parses comand line arguments
"""
import argparse
p = argparse.ArgumentParser(
description = "i think my desc is missing")
p.add_argument("action", default="help", choices = ["start", "stop"], help="What to do?")
#p.add_argument("--daemon", "-d", type = bool, choices = [1, 0], default=1, help="Daemonize, Default: 1")
return p.parse_args()
def main():
args = parseargs()
if args.action == "start":
startbot()
elif args.action == "stop": print("nope!")
return 0
if __name__ == '__main__':
################
### SETTINGS ###
################
IDENT = "chalkbot"
NICKNAME = "chalkbot"
ALT_NICKNAME = "chalkbot_"
REALNAME = "A ChalkBot Instance"
# Command for registering with nickserv, without leading slash
NICKSERVCMD = ""
SERVER = "fanir.de"
PORT = 6667
ENCODINGS = ('utf-8', 'latin-1', 'iso-8859-1', 'cp1252')
CHANNELS = ["#bots"]
main()