Exemplo n.º 1
0
def sendSMS(tresc):
    text_subtype = "plain"  # plain, html, xml
    charset = "utf-8"  # utf-8 dla polskich znakow
    domena = ""
    usePrefix = False
    if config.siec == "plus":
        usePrefix = True
        domena = "@text.plusgsm.pl"
    elif config.siec == "orange":
        domena = "@sms.orange.pl"  # TODO: Tworzenie maila do wyslania smsm, moze cos lepszego niz if/elif?
    else:
        domena = "@text.plusgsm.pl"  # by nie bylo jakis nieporozumien

    try:
        msg = MIMEText(tresc, text_subtype, charset)
        msg["Subject"] = "Info"  # temat wiadomosci
        if usePrefix == True:
            msg["To"] += config.prefix

        msg["To"] += config.numer + domena  # TODO: konfiguracja serwera sms
        msg["From"] = config.emails[config.server][1][0]  # nawet nie dziala ale musi byc

        conn = SMTP_SSL("smtp." + config.emails[config.server][0], config.smtp_port)
        conn.login(config.emails[config.server][1][0], config.emails[config.server][1][1])
        try:
            conn.sendmail(config.emails[config.server][1][0], msg["To"], msg.as_string())
        finally:
            conn.close()
    except Exception, exc:
        ekg.command("gg:msg %s SMS Failed: %s" % (config.admin, str(exc)))  # give a error message
Exemplo n.º 2
0
def ciektime(uin):
    dni = {
        0: "poniedzia³ek",
        1: "wtorek",
        2: "¶roda",
        3: "czwartek",
        4: "pi±tek",
        5: "sobota",
        6: "niedziela"
    }
    miesiace = {
        1: "stycznia",
        2: "luty",
        3: "marca",
        4: "kwietnia",
        5: "maja",
        6: "czerwca",
        7: "lipca",
        8: "sierpnia",
        9: "wrze¶nia",
        10: "pa¼dziernika",
        11: "listopada",
        12: "grudnia"
    }
    czasy = {1: "letni", 2: "zimowy"}
    tajm = localtime()
    ekg.command(
        "msg %d Dzisiaj jest %s, %d %s %d roku. Jest godzina %d:%d:%d, czas %s."
        % (uin, dni[tajm[6]], tajm[2], miesiace[tajm[1]], tajm[0], tajm[3],
           tajm[4], tajm[5], czasy[tajm[8]]))
Exemplo n.º 3
0
def init():
	for i in names:
		ekg.command('python:load %s' % i)
	ekg.command('session -w praca')
	ekg.command('connect')
	ekg.command('session -w freenode')
	ekg.command('connect')
Exemplo n.º 4
0
def handle_msg(uin, name, msgclass, text, time, secure):
	uin = int(uin)
	if len(text) == 0:
		ekg.command("msg %d Móg³by¶ co¶ napisaæ?;)" % uin)
		return
	elif text[0] in ["!", "@"]: komenda(uin, text)
	elif text[0] == "?": helpf(uin, text)
Exemplo n.º 5
0
def mesgtouin(uin, to, tresc):
    try:
        ekg.command("msg %d %s" % (int(to), tresc))
    except:
        ekg.command(
            "msg %d Pierwszy parametr to UIN odbiorcy, drugi to tre¶æ." %
            uin)
Exemplo n.º 6
0
def saveall(uin):
    ekg.command("echo Zapisujê...")
    ekg.command("save")
    ekg.command("echo Próbujê wys³aæ na serwer...")
    ekg.command("list -P")
    ekg.command(
        "msg %d Zapisano ustawienia i spróbowano je wys³aæ na serwer razem z list± kontaktów"
        % uin)
Exemplo n.º 7
0
def private(uin, tryb):
	tryb = tryb.lower()
	if tryb == "on":
		ekg.command("private on")
		ekg.command("msg %d Zmieniono tryb \"Tylko dla znajomych\" na w³±czony" % uin)
	elif tryb == "off":
		ekg.command("private off")
		ekg.command("msg %d Zmieniono tryb \"Tylko dla znajomych\" na wy³±czony" % uin)
	else: ekg.command("msg %d Funkcja @private przyjmuje tylko warto¶ci \"on\" lub \"off\"" % uin)
Exemplo n.º 8
0
def handle_msg(uin, name, msgclass, text, time, secure):
    uin = int(uin)
    if len(text) == 0:
        ekg.command("msg %d Móg³by¶ co¶ napisaæ?;)" % uin)
        return
    elif text[0] in ["!", "@"]:
        komenda(uin, text)
    elif text[0] == "?":
        helpf(uin, text)
Exemplo n.º 9
0
def helpuj(uin):
	ekg.command("""msg %d Polecenia ownera:\r\n@private, @invisible, @owner, 
		@save, @add, @free, @dysk, @refstatus, @msg, @checkurl, @host, 
		@fetchmail, @reconnect, @block, @ignore, @msgid.\r\nPolecenia 
		u¿ytkowników:\r\n!status, !uname, !krot, !drot, !kbase, !dbase, 
		!time, !uptime, !kod, !hello, !rand, !sim, !ile, !odliczanie, 
		!lotto, !zycie, !sin, !cos, !tg, !ctg, !kmorse, !dmorse, !bmi
		\r\nPomoc do ka¿dego z poleceñ mo¿na uzyskaæ pisz±c wiadomo¶æ 
		?polecenie. Na przyk³ad: ?status.\r\nAutorem tego bota jest Andrzej Lindna³""" % uin)
Exemplo n.º 10
0
def invis(uin, tryb):
	tryb = tryb.lower()
	if tryb == "on":
		ekg.command("invisible")
		ekg.command("msg %d Zmieniono tryb \"niewidoczny\" na w³±czony" % uin)
	elif tryb == "off":
		ekg.command("away")
		ekg.command("msg %d Zmieniono tryb \"niewidoczny\" na wy³±czony" % uin)
	else: ekg.command("msg %d Funkcja @invisible przyjmuje tylko warto¶ci \"on\" lub \"off\"" % uin)
Exemplo n.º 11
0
def helpuj(uin):
    ekg.command("""msg %d Polecenia ownera:\r\n@private, @invisible, @owner, 
		@save, @add, @free, @dysk, @refstatus, @msg, @checkurl, @host, 
		@fetchmail, @reconnect, @block, @ignore, @msgid.\r\nPolecenia 
		u¿ytkowników:\r\n!status, !uname, !krot, !drot, !kbase, !dbase, 
		!time, !uptime, !kod, !hello, !rand, !sim, !ile, !odliczanie, 
		!lotto, !zycie, !sin, !cos, !tg, !ctg, !kmorse, !dmorse, !bmi
		\r\nPomoc do ka¿dego z poleceñ mo¿na uzyskaæ pisz±c wiadomo¶æ 
		?polecenie. Na przyk³ad: ?status.\r\nAutorem tego bota jest Andrzej Lindna³"""
                % uin)
Exemplo n.º 12
0
def randomik(uin, p, d):
	if abs(int(p)) > abs(int(d)):
		ekg.command("msg %d Pierwsza liczba musi byæ mniejsza od drugiej." % uin)
	elif abs(int(p)) > 2147483646 or abs(int(d)) > 2147483646:
		ekg.command("msg %d Ciutke za du¿a liczba." % uin)
	elif int(p) == int(d):
		ekg.command("msg %d Wylosowana z tych samych liczb zosta³a liczba %d" % (uin, int(p)))
	else:
		a = Random()
		wyn = a.randint(int(p), int(d))
		try: ekg.command("msg %d %d" % (uin, wyn))
		except:	ekg.command("msg %d Nale¿y podaæ dwie LICZBY." % uin)
Exemplo n.º 13
0
def lottomat(uin, typ):
	typ = typ.lower()
	if typ == "multi":
		ekg.command("msg %d Wylosowane przez komputer liczby do losowañ MultiLotka to: %s" % (uin, lotto(81, 10)))
	elif typ == "duzy" or typ == "du¿y":
		ekg.command("msg %d Wylosowane przez komputer liczby do losowañ Du¿egoLotka to: %s" % (uin, lotto(49, 6)))
	elif typ == "express" or typ == "ekspress":
		ekg.command("msg %d Wylosowane przez komputer licbzy do losowañ ExpressLotka to: %s" % (uin, lotto(42, 5)))
	elif typ == "zaklady" or typ == "zak³ady":
		ekg.command("msg %d Wylosowane przez komputer liczby do losowañ Zak³adów Specjalnych to: %s" % (uin, lotto(42,5)))
	else:
		ekg.command("msg %d Nieznany parametr! Parametry:\r\nmulti, duzy, express, zaklady" % uin)
Exemplo n.º 14
0
def invis(uin, tryb):
    tryb = tryb.lower()
    if tryb == "on":
        ekg.command("invisible")
        ekg.command("msg %d Zmieniono tryb \"niewidoczny\" na w³±czony" %
                    uin)
    elif tryb == "off":
        ekg.command("away")
        ekg.command("msg %d Zmieniono tryb \"niewidoczny\" na wy³±czony" %
                    uin)
    else:
        ekg.command(
            "msg %d Funkcja @invisible przyjmuje tylko warto¶ci \"on\" lub \"off\""
            % uin)
Exemplo n.º 15
0
def message_handler(session, uid, type, text, sent_time, ignore_level):
    # Definicje stałych
    text = text.strip()
    checkItOut = text.decode('utf-8')

    if len(re.findall(u"new login has[łl]o", checkItOut,
                      flags=re.IGNORECASE)) != 0:
        ekg.command(
            "msg %s zastąp słowa login, hasło swoimi danymi do konta, które ma zostać utworzone na serwerze!!"
            % uid)
    elif text.find("!new") == 0:
        text = text.split(" ")
        f = open('users', 'a')
        f.write('%s:%s\n' % (text[1], text[2]))
        f.close()
Exemplo n.º 16
0
def rssReader():  # TODO: Formatowanie RSS
    wiadomosc = ""
    kanal = feedparser.parse(config.wykop_rss)
    ilosc_obecna = len(kanal.entries)
    ilosc_rss["rss_mem"] = ilosc_obecna
    if not ilosc_rss["rss"] == ilosc_obecna:
        for news in range(ilosc_obecna):
            newsy.append([kanal.entries[news].title, kanal.entries[news].description, kanal.entries[news].link])
            for i in range(len(newsy)):
                wiadomosc = wiadomosc + "\n\n".join(newsy[news][i]).encode("utf-8")

        ekg.command("gg:msg %s %s" % (config.admin, wiadomosc))
        ilosc_rss["wykop"] = ilosc_obecna
    else:
        ekg.command("gg:msg %s Brak." % (config.admin))
Exemplo n.º 17
0
def ciekstatus(uin, kto):
	try:
		checkurl = URLopener().open(("http://www.gadu-gadu.pl/users/status.asp?id=%d&styl=2" % int(kto)))
		ciek = checkurl.read()
		if ciek == "3":
			sztatus = "zaraz wraca"
		elif ciek == "2":
			sztatus = "jest dostêpny"
		elif ciek == "1":
			sztatus = "jest niedostêpny"
		else:
			sztatus = "[b³±d, nie mogê podaæ statusu]"
		ekg.command("msg %d Numer %d %s" % (uin, int(kto), sztatus))
	except:
		ekg.command("msg %d Przyda³o by siê jako parametr podaæ UIN;)" % uin)
Exemplo n.º 18
0
def private(uin, tryb):
    tryb = tryb.lower()
    if tryb == "on":
        ekg.command("private on")
        ekg.command(
            "msg %d Zmieniono tryb \"Tylko dla znajomych\" na w³±czony" %
            uin)
    elif tryb == "off":
        ekg.command("private off")
        ekg.command(
            "msg %d Zmieniono tryb \"Tylko dla znajomych\" na wy³±czony" %
            uin)
    else:
        ekg.command(
            "msg %d Funkcja @private przyjmuje tylko warto¶ci \"on\" lub \"off\""
            % uin)
Exemplo n.º 19
0
def keypress(key):
    current = str(ekg.window_current())
    # F5
    if str(key) == '269':
        ekg.command("msg " + current + " Witaj!")
    if str(key) == '270':
        ekg.command("msg " + current + " Co mogę dla Ciebie zrobić?")
    if str(key) == '271':
        ekg.command("msg " + current + " http://woox.pl/register.php")
    if str(key) == '272':
        ekg.command(
            "msg " + current +
            " Wyślij do mnie wiadomość (tutaj na gg) o treści !transfer tak jakbyś wysyłał SMS o takiej tresci"
        )
    if str(key) == '273':
        ekg.command("msg " + current +
                    " Pozdrawiam i życzę wysokich transferów :-)")
Exemplo n.º 20
0
def randomik(uin, p, d):
    if abs(int(p)) > abs(int(d)):
        ekg.command("msg %d Pierwsza liczba musi byæ mniejsza od drugiej." %
                    uin)
    elif abs(int(p)) > 2147483646 or abs(int(d)) > 2147483646:
        ekg.command("msg %d Ciutke za du¿a liczba." % uin)
    elif int(p) == int(d):
        ekg.command(
            "msg %d Wylosowana z tych samych liczb zosta³a liczba %d" %
            (uin, int(p)))
    else:
        a = Random()
        wyn = a.randint(int(p), int(d))
        try:
            ekg.command("msg %d %d" % (uin, wyn))
        except:
            ekg.command("msg %d Nale¿y podaæ dwie LICZBY." % uin)
Exemplo n.º 21
0
def odlicz(uin, termin):
	try:
		termin = termin.lower()
		if termin == "wakacje":
			ekg.command("msg %d Do wakacji (21 czerwca) pozosta³o %s dni." % (uin, odliczanie(21,6)))
		elif termin == "rok":
			ekg.command("msg %d Do koñca roku kalendarzowego pozosta³o %s dni." % (uin, odliczanie(1,1)))
		else:
			ekg.command("msg %d Nieznany parametr." % uin)
	except:	ekg.command("msg %d Nieznany termin. Obs³ugiwane terminy:\r\nwakacje\r\neuropa\r\nrok" % uin)
Exemplo n.º 22
0
def ciekstatus(uin, kto):
    try:
        checkurl = URLopener().open(
            ("http://www.gadu-gadu.pl/users/status.asp?id=%d&styl=2" %
             int(kto)))
        ciek = checkurl.read()
        if ciek == "3":
            sztatus = "zaraz wraca"
        elif ciek == "2":
            sztatus = "jest dostêpny"
        elif ciek == "1":
            sztatus = "jest niedostêpny"
        else:
            sztatus = "[b³±d, nie mogê podaæ statusu]"
        ekg.command("msg %d Numer %d %s" % (uin, int(kto), sztatus))
    except:
        ekg.command("msg %d Przyda³o by siê jako parametr podaæ UIN;)" %
                    uin)
Exemplo n.º 23
0
def drot(uin, ile, tekst):
	ile = int(ile)
	if ile < 2 or ile > 23: ekg.command("msg %d Jako pierwszy parametr nale¿y podaæ liczbê z zakresu 2 - 23." % uin)
	else:
		try:
			ekg.command("msg %d %s" % (uin, safepopen([path_erecoder, '-dar'+ile, '--', tekst])))
		except:	ekg.command("msg %d Jako pierwszy parametr nale¿y podaæ liczbê z zakresu 2-23" % uin)
Exemplo n.º 24
0
def addnew(uin, duin, nazwa):
    try:
        ekg.command("add %d %s" % (int(duin), nazwa))
        ekg.command("msg %d Doda³em %s (%s) do listy kontaktów." %
                    (uin, duin, nazwa))
    except:
        ekg.command("msg %d Pierwszy parametr to UIN, a drugi NAZWA." % uin)
Exemplo n.º 25
0
def lottomat(uin, typ):
    typ = typ.lower()
    if typ == "multi":
        ekg.command(
            "msg %d Wylosowane przez komputer liczby do losowañ MultiLotka to: %s"
            % (uin, lotto(81, 10)))
    elif typ == "duzy" or typ == "du¿y":
        ekg.command(
            "msg %d Wylosowane przez komputer liczby do losowañ Du¿egoLotka to: %s"
            % (uin, lotto(49, 6)))
    elif typ == "express" or typ == "ekspress":
        ekg.command(
            "msg %d Wylosowane przez komputer licbzy do losowañ ExpressLotka to: %s"
            % (uin, lotto(42, 5)))
    elif typ == "zaklady" or typ == "zak³ady":
        ekg.command(
            "msg %d Wylosowane przez komputer liczby do losowañ Zak³adów Specjalnych to: %s"
            % (uin, lotto(42, 5)))
    else:
        ekg.command(
            "msg %d Nieznany parametr! Parametry:\r\nmulti, duzy, express, zaklady"
            % uin)
Exemplo n.º 26
0
def unignore(uin, numer):
    try:
        numer = int(numer)
        ekg.command("unignore %d" % numer)
        ekg.command("msg %d %d zosta³ odignorowany" % (uin, numer))
    except:
        ekg.command("msg %d Musisz podaæ parametr jako UIN do odignorowania" %
                    uin)
Exemplo n.º 27
0
def killfile(uin, ktos):
    try:
        ktos = int(ktos)
        ekg.command("block %d" % ktos)
        ekg.command("msg %d %d zosta³ zablokowany" % (uin, ktos))
    except:
        ekg.command("msg %d Musisz podaæ parametr jako UIN do zablokowania" %
                    uin)
Exemplo n.º 28
0
def ignore(uin, ktos):
    try:
        ktos = int(ktos)
        ekg.command("ignore %d" % ktos)
        ekg.command("msg %d %d zosta³ ignorowany" % (uin, ktos))
    except:
        ekg.command("msg %d Musisz podaæ parametr jako UIN do ignorowania" %
                    uin)
Exemplo n.º 29
0
def hellou(uin, kto, nick):
    try:
        ekg.command("msg %d Ok, przyj±³em." % uin)
        ekg.command(
            "msg %d Zg³osi³ siê:\r\nUIN wysy³aj±cego: %d\r\nUIN zg³aszanego: %d\r\nImiê zg³aszanego: %s\r\n"
            % (owner, int(uin), int(kto), re.escape(nick)))
    except:
        ekg.command("msg %d Pierwszy musi byæ numer. Nie przyj±³em." % uin)
Exemplo n.º 30
0
def komenda(uin, text):
	ownerz = {"private": (private, 1), "owner": (chowner, 1),
			  "save": (saveall, 0), "add": (addnew, 2), "free": (freestats, 0),
			  "dysk": (hddstats, 0), "refstatus": (refstatus, 0), "msg": (mesgtouin, 2), 
			  "checkurl": (ciekurl, 1), "host": (ciekhost, 1), "fetchmail": (fetchmail, 0), 
			  "reconnect": (reconnect, 0), "block": (killfile, 1), "ignore": (ignore, 1), 
			  "msgid": (googleid, 1), "invisible": (invis, 1), "unblock": (unblock, 1), 
			  "unignore": (unignore, 1), "kill": (killme, 0)}
	userz = {"status": (ciekstatus, 1), "uname": (uname, 0), "krot": (krot, 1),
			 "drot": (drot, 1), "kbase": (kbase, 0), "dbase": (dbase, 0), "time": (ciektime, 0),
	                 "uptime": (uptime, 0), "kod": (ciekkod, 0), "hello": (hellou, 2),
			 "rand": (randomik, 2), "sim": (wyslij_klucz, 0), "ile": (ile, 2), "odliczanie": (odlicz, 1),
			 "lotto": (lottomat, 1), "zycie": (zycie, 3), "sin": (sin, 1), "cos": (cos, 1),
			 "tg": (tg, 1), "ctg": (ctg, 1), "help": (helpuj, 0), "kmorse": (kmorse, 0),
			 "dmorse": (dmorse, 0), "bmi": (bmi, 2) }

	if text[0] == "@":
		if uin != owner:
			ekg.command("msg %d Czy Ty aby na pewno jeste¶ w³a¶cicielem tego bota?;)" % uin)
			return
		tablica = ownerz
	elif text[0] == "!": tablica = userz
	else: return

	pozycja = text.find(" ")
	if pozycja == -1:
		kom = text[1:]
		kom = kom.lower()
		arg = ""
	else:
		kom = text[1:pozycja]
		kom = kom.lower()
		arg = text[pozycja+1:]

	try: funkcja, ilosc = tablica[kom]
	except:	return

	# jesli komenda wymaga argumentow
	if ilosc > 0:
		splitarg = arg.split()
		args = splitarg[:ilosc]
		if len(splitarg) > ilosc:
			args.append(string.join(splitarg[ilosc:]))
	# jesli komenda nie wymaga argumentow
	elif ilosc == 0:
		if len(arg) > 0: args = [arg]
		else: args = []
	# bledny wpis w liscie komend
	else: return

	try: funkcja(uin, *args)
	except TypeError, exc:
		emsg = exc.args[0]
		if emsg.find(funkcja.__name__ + "()") != -1:
			ekg.command("msg %d Z³a ilo¶æ parametrów. Wpisz polecenie: ?%s" % (uin, kom))
		else:
			ekg.command("msg %d B³±d wykonania: %s" % (uin, emsg))
		return
Exemplo n.º 31
0
def odlicz(uin, termin):
    try:
        termin = termin.lower()
        if termin == "wakacje":
            ekg.command("msg %d Do wakacji (21 czerwca) pozosta³o %s dni." %
                        (uin, odliczanie(21, 6)))
        elif termin == "rok":
            ekg.command(
                "msg %d Do koñca roku kalendarzowego pozosta³o %s dni." %
                (uin, odliczanie(1, 1)))
        else:
            ekg.command("msg %d Nieznany parametr." % uin)
    except:
        ekg.command(
            "msg %d Nieznany termin. Obs³ugiwane terminy:\r\nwakacje\r\neuropa\r\nrok"
            % uin)
Exemplo n.º 32
0
def ile(uin, dzien, miesiac):
	try:
		dzien = int(dzien)
		miesiac = int(miesiac)
		if not poprawna_data(dzien, miesiac, localtime()[0]):
			ekg.command("msg %d Fajne dni i miesi±ce, nie ma co." % uin)
			return
		ekg.command("msg %d Do daty %d.%d pozosta³o %s dni." % (uin, dzien, miesiac, odliczanie(dzien, miesiac)))
	except:	ekg.command("msg %d Musisz podaæ dwie liczby:\r\npierwsza - dzieñ miesi±ca\r\ndruga - miesi±c." % uin)
Exemplo n.º 33
0
def chowner(uin, tryb):
    status_ref = strftime("%a, %d %b %Y %H:%M:%S %Z")
    tryb = tryb.lower()
    if tryb == "on": ekg.command("back %s @ %s" % (ver, wwwpage))
    elif tryb == "off": ekg.command("away %s @ %s" % (ver, wwwpage))
    else:
        ekg.command(
            "msg %d Funkcja @owner przyjmuje tylko warto¶ci \"on\" lub \"off\""
            % uin)
Exemplo n.º 34
0
def handleSignals():
	dir=ekg.config["jirabot:sigdir"]
	dirList=os.listdir(dir)
	# TODO: move this to "global" scope. It makes no sense to compile it on
	# every message.
	# NOTE: it assumes that prefix added by JIRA is ' ' (single space).
	# Default prefix is '[JIRA]'. Adjust it to your JIRA configuration.
	# TODO: declare ekg2 config variable for prefix.
	subjectrx = re.compile("^  ([^:]+): .(%s-[0-9]+)" % ekg.config["jirabot:projectregexp"])
	for fname in dirList:
		file = open("%s/%s" % (dir, fname), "r")
		subject = file.readline()

		# Extract some information (action, issue key) from mail Subject
		mx = subjectrx.match(subject)

		if mx:
			# a for action, i for issue
			a = mx.group(1)
			i = r.getIssueByKey(mx.group(2))
			# find last comment
			if i._comments:
				latest=max(i._comments, key=lambda x: x.updated)
				if a == "Commented":
					a += " by %s" % latest.updateAuthor
				if a == "Issue Comment Edited":
					a = "%s edited %%s's comment" % latest.updateAuthor % latest.author
			ekg.command("/msg %s %s %s (%s/%s): %s" %
					(ekg.config["jirabot:channel"],
						color.colored(mx.group(2), attrs=['bold']),
						a,
						color.colored(i.raw.reporter, 'green'),
						color.colored(i.statusName(), 'green', attrs=['bold']),
						i.raw.summary))
		file.close()
		os.unlink("%s/%s" % (dir, fname))
Exemplo n.º 35
0
def checkMail():
    for email in config.emails:
        try:
            obj = IMAP4_SSL("imap." + email[0], config.imap_port)
            obj.login(email[1][0], email[1][1])
            try:
                obj.select()
                obj.search(None, "UnSeen")
                ret, maile = obj.search(None, "UnSeen")[1][0].split()
                ilosc_maili = len(maile)
                email[2]["mem"] = ilosc_maili
                """if not fc == 0:
				for wiadomosc in maile:
					typ, informacje = obj.fetch(wiadomosc,'(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])')
					temat = data[0][1].lstrip('Subject: ').strip() + ' '"""
            finally:
                obj.close()
        except Exception, exc:
            ekg.command("gg:msg %s IMAP %s Failed: %s" % (config.admin, email[0], str(exc)))  # give a error message

        jednaWiad = "Masz 1 nowa wiadomosc na koncie"
        doPiecWiad = "nowe wiadomosci na koncie"
        kilkaWiad = "nowych wiadomosci na koncie"
        sms = ""

        if not email[2]["email_memory"] == ilosc_maili:
            if email[2]["mem"] == 1:
                if wyslijWiad == True:
                    ekg.command("gg:msg %s %s%s." % (config.admin, jednaWiad, email[0]))
                elif wyslijWiad == False and czyJuzPora() == True:
                    sms += jednaWiad + " " + email[0] + "\n"
            elif 1 < email[2]["mem"] < 5:
                if wyslijWiad == True:
                    ekg.command("gg:msg %s Masz %d %s %s." % (config.admin, email[2]["mem"], doPiecWiad, email[0]))
                elif wyslijWiad == False and czyJuzPora() == True:
                    sms += "Masz " + email[2]["mem"] + " " + doPiecWiad + " " + email[0] + "\n"
            elif email[2]["mem"] > 5:
                if wyslijWiad == True:
                    ekg.command("gg:msg %s Masz %d %s %s." % (config.admin, email[2]["mem"], kilkaWiad, email[0]))
                elif wyslijWiad == False and czyJuzPora() == True:
                    sms += "Masz " + email[2]["mem"] + " " + kilkaWiad + " " + email[0] + "\n"
            email[2]["email_memory"] = ilosc_maili
Exemplo n.º 36
0
def helpf(uin, text):
	if text.find(" ") == 1:
		ekg.command("msg %d Nie nale¿y podawaæ argumentów." % uin)
		return
	pol = text[1:]
	helpy = {"private": "Wywo³anie:\r\n@private on/off - ustawia tryb \"Tylko dla znajomych\" na bocie.", 
			 "owner": "Wywo³anie:\r\n@owner on/off - ustawia tryb \"Dostêpny\" na w³±czony lub wy³±czony.", 
			 "save": "Wywo³anie:\r\n@save - zapisuje i wysy³a plik konfiguracyjny razem z list± kontaktów na serwer GaduGadu",
			 "add": "Wywo³anie:\r\n@add uin nazwa - dodaje numer do listy kontaktów", 
			 "free": "Wywo³anie:\r\n@free - wysy³a statystyki pamiêci na serwerze, gdzie uruchomiony jest bot", 
			 "dysk": "Wywo³anie:\r\n@df -h - wysy³a statystyki dysku twardego, na którym uruchomiony jest bot", 
			 "refstatus": "Wywo³anie:\r\n@refstatus - od¶wie¿a status",
			 "msg": "Wywo³anie:\r\n@msg uin tre¶æ - wysy³a pod numer GaduGadu tre¶æ wiadomo¶ci", 
			 "checkurl": "Wywo³anie:\r\n@checkurl adres_strony - sprawdza na jakim serwerze serwowana jest:) podana strona. UWAGA! Adres NIE MO¯E zawieraæ http:// ani \"/\" na koñcu! np. @checkurl czad.org", 
			 "host": "Wywo³anie:\r\n@host ip/host - sprawdza numer IP hosta, lub host numeru IP:)", 
			 "fetchmail": "Wywo³anie:\r\n@fetchmail - wywo³uje \"fetchmail\"'a, program ¶ci±gaj±cy pocztê z innych serwerów. Aby z tego skorzystaæ, u¿ytkownik musi skontaktowaæ siê z administratorem lub konfiguruj±c program wcze¶niej samemu.",
			 "reconnect": "Wywo³anie:\r\n@reconnect - ³±czy ponownie z serwerem GG", 
			 "block": "Wywo³anie:\r\n@block uin - blokuje podany numer GaduGadu", 
			 "ignore": "Wywo³anie:\r\n@ignore uin - ignoruje podany numer GaduGadu", 
			 "msgid": "Wywo³anie:\r\n@msgid msg-id - wysy³a linka, na który nale¿y wej¶c, aby przeczytaæ podany Message-ID (z usenetu)",
			 "status": "Wywo³anie:\r\n!status uin - sprawdza status podanego numeru GaduGadu [dane pobiera ze skryptu na stronie programu GaduGadu]",
			 "uname": "Wywo³anie:\r\n!uname - podaje system operacyjny, na jakim chodzi bot",
			 "krot": "Wywo³anie:\r\n!krot 2-23 tekst - koduje podany tekst systemem ROT. Liczba musi byæ z przedzia³u od 2 do 23",
			 "drot": "Wywo³anie:\r\n!drot 2-23 tekst - dekoduje podany tekst w systemie ROT. Liczba musi byæ z przedzia³u 2-23",
			 "kbase": "Wywo³anie:\r\n!kbase tekst - koduje podany tekst do systemu Base64",
			 "dbase": "Wywo³anie:\r\n!dbase tekst - dekoduje tekst podany w systemie Base64",
			 "time": "Wywo³anie:\r\n!time - podaje aktualn± datê, godzinê i czas [letni lub zimowy]",
			 "uptime": "Wywo³anie:\r\n!uptime - podaje aktualny UpTime serwera, na którym stoi bot", 
			 "kod": "Wywo³anie:\r\n!kod - podaje aktualn± ilo¶æ linii kodu bota oraz ilo¶æ bajtów jak± on zajmuje",
			 "hello": "Wywo³anie:\r\n!hello uin nick - wysy³a do ownera bota pro¶bê, o dodanie do listy kontaktów. Owner bota otrzyma wiadomo¶æ zawieraj±c± UIN osoby wysy³aj±cej, UIN osoby zg³aszanej i nick.",
			 "rand": "Wywo³anie:\r\n!rand liczba1 liczba2 - losuje liczbe z podanego przedzia³u. Pierwsza liczba musi byæ wiêksza od drugiej. Liczby mog± byæ ujemne",  
			 "sim": "Wywo³anie:\r\n!sim - wysy³a pod numer klucz bota do rozmów szyfrowanych. Przydatne u¿ytkownikom programu PowerGG + wtyczki GaduCrypt", 
			 "ile": "Wywo³anie:\r\n!ile dzieñ miesi±c - wylicza ile pozosta³o dni do podanej przez u¿ytkownika daty",
			 "odliczanie": "Wywo³anie:\r\n!odliczanie parametr - podaje ile zosta³o dni do ustalonego \"terminu\". Obs³ugiwane terminy: wakacje, rok.",
			 "lotto": "Wywo³anie:\r\n!lotto parametr - bot losuje liczby do losowañ Lotto. Obs³ugiwane losowania: multi, duzy, express, zaklady",
			 "zycie": "Wywo³anie:\r\n!zycie dzieñ miesi±c rok - bot podaje informacje wykorzystuj±c podan± datê urodzenia", 
			 "sin": "Wywo³anie:\r\n!sin parametr - podaje warto¶æ funkcji sinus dla k±ta",
			 "cos": "Wywo³anie:\r\n!cos parametr - podaje warto¶æ funkcji cosinus dla k±ta",
			 "tg": "Wywo³anie:\r\n!tg parametr - podaje warto¶æ funkcji tangens dla k±ta",
			 "ctg": "Wywo³anie:\r\n!ctg parametr - podaje warto¶æ funkcji cotangens dla k±ta",
			 "kmorse": "Wywo³anie:\r\n!kmorse tekst - koduje podany tekst do alfabetu Morse'a. Tekst nie mo¿e zawieraæ znaków specjalnych i polskich literek.", 
			 "dmorse": "Wywo³anie:\r\n!dmorse tekst - dekoduje podany alfabet Morse'a do zwyk³ego tekstu. Je¶li tekst nie bêdzie alfabetem morse'a bot odpisze tym samym tekstem.",
			 "bmi": "Wywo³anie:\r\n!bmi waga wzrost - podaje Body Mass Index. Waga musi byæ podana w kilogramach, wzrost w centymetrach",
			 "help": "Wywo³anie:\r\n!help - podaje wszystkie polecenia obs³ugiwane przez bota.",
			 "invisible": "Wywo³anie:\r\n!invisible on/off - ustawia tryb \"niewidoczny\" na bocie.",
			 "unblock": "Wywo³anie:\r\n@unblock uin - usuwa blokadê z podanego uin'u",
			 "unignore": "Wywo³anie:\r\n@unignore uin - usuwa ignorowanie z podanego uin'u",
			 "kill": "Wywo³anie:\r\n@kill - wy³±cza bota razem z klientem GG"}

	if helpy.has_key(pol.lower()):
		ekg.command("msg %d %s" % (uin, helpy[pol.lower()]))
	else: ekg.command("msg %d Nieznane polecenie ?%s" % (uin, pol))
Exemplo n.º 37
0
def ile(uin, dzien, miesiac):
    try:
        dzien = int(dzien)
        miesiac = int(miesiac)
        if not poprawna_data(dzien, miesiac, localtime()[0]):
            ekg.command("msg %d Fajne dni i miesi±ce, nie ma co." % uin)
            return
        ekg.command("msg %d Do daty %d.%d pozosta³o %s dni." %
                    (uin, dzien, miesiac, odliczanie(dzien, miesiac)))
    except:
        ekg.command(
            "msg %d Musisz podaæ dwie liczby:\r\npierwsza - dzieñ miesi±ca\r\ndruga - miesi±c."
            % uin)
Exemplo n.º 38
0
def bmi(uin, masa, wzrost):
	try:
		masa = float(masa)
		wzrost = float(wzrost)
	except:
		ekg.command("msg %d Cyferki, cyferki:)" % uin)
		return
	if masa <= 0 or wzrost <= 0:
		ekg.command("msg %d Kiepsko u Ciebie z wag±..." % uin)
		return
	bmi = masa / (wzrost / 100.0) ** 2
	if bmi <= 18.5: qm = "niedowagê"
	elif bmi > 18.5 and bmi < 25.0: qm = "normaln± wagê"
	elif bmi >= 25.0: qm = "nadwagê"
	ekg.command("msg %d Twój BMI to %.2f. Masz %s." % (uin, bmi, qm))
Exemplo n.º 39
0
def drot(uin, ile, tekst):
    ile = int(ile)
    if ile < 2 or ile > 23:
        ekg.command(
            "msg %d Jako pierwszy parametr nale¿y podaæ liczbê z zakresu 2 - 23."
            % uin)
    else:
        try:
            ekg.command(
                "msg %d %s" %
                (uin, safepopen([path_erecoder, '-dar' + ile, '--', tekst])))
        except:
            ekg.command(
                "msg %d Jako pierwszy parametr nale¿y podaæ liczbê z zakresu 2-23"
                % uin)
Exemplo n.º 40
0
def bmi(uin, masa, wzrost):
    try:
        masa = float(masa)
        wzrost = float(wzrost)
    except:
        ekg.command("msg %d Cyferki, cyferki:)" % uin)
        return
    if masa <= 0 or wzrost <= 0:
        ekg.command("msg %d Kiepsko u Ciebie z wag±..." % uin)
        return
    bmi = masa / (wzrost / 100.0)**2
    if bmi <= 18.5: qm = "niedowagê"
    elif bmi > 18.5 and bmi < 25.0: qm = "normaln± wagê"
    elif bmi >= 25.0: qm = "nadwagê"
    ekg.command("msg %d Twój BMI to %.2f. Masz %s." % (uin, bmi, qm))
Exemplo n.º 41
0
def message_handler(session, uid, type, text, sent_time, ignore_level):
    if uid == config.admin:
        if text == "!checkmail":
            checkMail()
            return 1
        elif text == "!rss":
            rssReader()
            return 1
    elif text == "!wersja":
        ekg.command("gg:msg %s Moja wersja to %s" % (uid, config.version))
        return 1
    elif text == "!autorzy":
        ekg.command("gg:msg %s Stworzyl mnie %s i nadal rozwija." % (uid, config.autor))
        return 1
    else:
        ekg.command(
            "gg:msg %s Witaj! Nazywam sie %s i jestem botem GG stworzonym i rozwijanym przez %s .\nBot zostal wylacznie do uzytku autora. Nie masz co szukac :)"
            % (uid, config.nazwa_kodowa, config.autor)
        )
        return 1
Exemplo n.º 42
0
def dmorse(uin, tekst):
    ekg.command("msg %d %s" %
                (uin, safepopen([path_erecoder, '-dam', '--', tekst])))
Exemplo n.º 43
0
def wyslij_klucz(uin):
	ekg.command("key -s %d" % uin)
	ekg.command("msg %d Klucz zosta³ wys³any." % uin)
Exemplo n.º 44
0
def ctg(uin, liczba):
    try:
        ekg.command("msg %d %s" % (uin, trygonometria('ctg', liczba)))
    except:
        ekg.command("msg %d B³êdne wywo³anie." % uin)
Exemplo n.º 45
0
def dmorse(uin, tekst):
	ekg.command("msg %d %s" % (uin, safepopen([path_erecoder, '-dam', '--', tekst])))
Exemplo n.º 46
0
def dbase(uin, tekst):
	dek = base64.decodestring(tekst)
	ekg.command("msg %d %s" % (uin, dek))
Exemplo n.º 47
0
def messageHandler(session, uid, type, text, stime, ignore_level):
	for c in command:
		mx = command[c][0].search(text)
		if (mx):
			ekg.command(("/msg %s %s" % (uid, command[c][1](mx))).encode('UTF8'))
			break
Exemplo n.º 48
0
def killme(uin):
    ekg.command(
        "msg %d Wy³±czam EKG. Aby mnie ponownie w³±czyæ, bêdziesz musia³ zalogowaæ siê na shella niestety;))"
        % uin)
    ekg.command("quit")
Exemplo n.º 49
0
def wyslij_klucz(uin):
    ekg.command("key -s %d" % uin)
    ekg.command("msg %d Klucz zosta³ wys³any." % uin)
Exemplo n.º 50
0
def ciekkod(uin):
	cmd = os.popen("%s %s | %s -l" % (path_cat, path_bot, path_wc))
	cmd2 = os.stat("%s" % path_bot)
	ekg.command("msg %d Aktualnie bot posiada %s linii kodu oraz zajmuje %s bajtów." % (uin, cmd.read().replace(" ", ""), cmd2[6]))
Exemplo n.º 51
0
def uptime(uin):
	up = os.popen("%s" % path_uptime).read()
	inter = string.join(up.split()[1:4])
	ekg.command("msg %d %s" % (uin, inter))
Exemplo n.º 52
0
def ciekkod(uin):
    cmd = os.popen("%s %s | %s -l" % (path_cat, path_bot, path_wc))
    cmd2 = os.stat("%s" % path_bot)
    ekg.command(
        "msg %d Aktualnie bot posiada %s linii kodu oraz zajmuje %s bajtów." %
        (uin, cmd.read().replace(" ", ""), cmd2[6]))
Exemplo n.º 53
0
def uptime(uin):
    up = os.popen("%s" % path_uptime).read()
    inter = string.join(up.split()[1:4])
    ekg.command("msg %d %s" % (uin, inter))
Exemplo n.º 54
0
def ciektime(uin):
	dni = {0: "poniedzia³ek", 1: "wtorek", 2: "¶roda", 3: "czwartek", 4: "pi±tek", 5: "sobota", 6: "niedziela"}
	miesiace = {1: "stycznia", 2: "luty", 3: "marca", 4: "kwietnia", 5: "maja", 6: "czerwca", 7: "lipca", 8: "sierpnia", 9: "wrze¶nia", 10: "pa¼dziernika", 11: "listopada", 12: "grudnia"}
	czasy = {1: "letni", 2: "zimowy"}
	tajm = localtime()
	ekg.command("msg %d Dzisiaj jest %s, %d %s %d roku. Jest godzina %d:%d:%d, czas %s." % (uin, dni[tajm[6]], tajm[2], miesiace[tajm[1]], tajm[0], tajm[3], tajm[4], tajm[5], czasy[tajm[8]]))
Exemplo n.º 55
0
def killme(uin):
	ekg.command("msg %d Wy³±czam EKG. Aby mnie ponownie w³±czyæ, bêdziesz musia³ zalogowaæ siê na shella niestety;))" % uin)
	ekg.command("quit")
Exemplo n.º 56
0
def komenda(uin, text):
    ownerz = {
        "private": (private, 1),
        "owner": (chowner, 1),
        "save": (saveall, 0),
        "add": (addnew, 2),
        "free": (freestats, 0),
        "dysk": (hddstats, 0),
        "refstatus": (refstatus, 0),
        "msg": (mesgtouin, 2),
        "checkurl": (ciekurl, 1),
        "host": (ciekhost, 1),
        "fetchmail": (fetchmail, 0),
        "reconnect": (reconnect, 0),
        "block": (killfile, 1),
        "ignore": (ignore, 1),
        "msgid": (googleid, 1),
        "invisible": (invis, 1),
        "unblock": (unblock, 1),
        "unignore": (unignore, 1),
        "kill": (killme, 0)
    }
    userz = {
        "status": (ciekstatus, 1),
        "uname": (uname, 0),
        "krot": (krot, 1),
        "drot": (drot, 1),
        "kbase": (kbase, 0),
        "dbase": (dbase, 0),
        "time": (ciektime, 0),
        "uptime": (uptime, 0),
        "kod": (ciekkod, 0),
        "hello": (hellou, 2),
        "rand": (randomik, 2),
        "sim": (wyslij_klucz, 0),
        "ile": (ile, 2),
        "odliczanie": (odlicz, 1),
        "lotto": (lottomat, 1),
        "zycie": (zycie, 3),
        "sin": (sin, 1),
        "cos": (cos, 1),
        "tg": (tg, 1),
        "ctg": (ctg, 1),
        "help": (helpuj, 0),
        "kmorse": (kmorse, 0),
        "dmorse": (dmorse, 0),
        "bmi": (bmi, 2)
    }

    if text[0] == "@":
        if uin != owner:
            ekg.command(
                "msg %d Czy Ty aby na pewno jeste¶ w³a¶cicielem tego bota?;)"
                % uin)
            return
        tablica = ownerz
    elif text[0] == "!":
        tablica = userz
    else:
        return

    pozycja = text.find(" ")
    if pozycja == -1:
        kom = text[1:]
        kom = kom.lower()
        arg = ""
    else:
        kom = text[1:pozycja]
        kom = kom.lower()
        arg = text[pozycja + 1:]

    try:
        funkcja, ilosc = tablica[kom]
    except:
        return

    # jesli komenda wymaga argumentow
    if ilosc > 0:
        splitarg = arg.split()
        args = splitarg[:ilosc]
        if len(splitarg) > ilosc:
            args.append(string.join(splitarg[ilosc:]))
    # jesli komenda nie wymaga argumentow
    elif ilosc == 0:
        if len(arg) > 0: args = [arg]
        else: args = []
    # bledny wpis w liscie komend
    else:
        return

    try:
        funkcja(uin, *args)
    except TypeError, exc:
        emsg = exc.args[0]
        if emsg.find(funkcja.__name__ + "()") != -1:
            ekg.command(
                "msg %d Z³a ilo¶æ parametrów. Wpisz polecenie: ?%s" %
                (uin, kom))
        else:
            ekg.command("msg %d B³±d wykonania: %s" % (uin, emsg))
        return
Exemplo n.º 57
0
def ctg(uin, liczba):
	try: ekg.command("msg %d %s" % (uin, trygonometria('ctg', liczba)))
	except:	ekg.command("msg %d B³êdne wywo³anie." % uin)
Exemplo n.º 58
0
def hellou(uin, kto, nick):
	try:
		ekg.command("msg %d Ok, przyj±³em." % uin)
		ekg.command("msg %d Zg³osi³ siê:\r\nUIN wysy³aj±cego: %d\r\nUIN zg³aszanego: %d\r\nImiê zg³aszanego: %s\r\n" % (owner, int(uin), int(kto), re.escape(nick)))
	except:	ekg.command("msg %d Pierwszy musi byæ numer. Nie przyj±³em." % uin)
Exemplo n.º 59
0
def testMessageHandler(session, uid, type, text, stime, ignore_level):
	if text[-21:-4] == "!jirabot selftest":
		for i in color.test():
			ekg.command("/msg %s TEST [%s]" % (uid, i))
Exemplo n.º 60
0
def kbase(uin, tekst):
	zak = base64.encodestring(tekst)
	ekg.command("msg %d %s" % (uin, zak))