Exemplo n.º 1
0
def processMessage(args, rawMessage, db_connection):
    return
    if len(args) < 1 or args[0].lower() != "!" + _bottrigger:
        return

    expr = stripFromBegin(rawMessage["message"],
                          ["!" + _bottrigger]).strip(''.join(_space_chars))

    ret = timeout.timed_run(calc.evaluate, [expr])

    if isinstance(ret, Exception):
        return helper.botMessage("Ein Fehler trat auf: %s" % ret, _botname)
    elif ret is None:
        return helper.botMessage("Die Evaluierung dauerte zu lange.", _botname)
    else:
        return helper.botMessage("%s" % ret, _botname)
Exemplo n.º 2
0
def mainloop(args):
    parser = argparse.ArgumentParser()
    parser.add_argument('-i', '--interactive', action='store_true')
    parser.add_argument('--channel', default='fbot')
    parser.add_argument('--mainchannel-on-my-own-risk', action='store_true')
    parsedArgs = vars(parser.parse_args())

    if parsedArgs['interactive'] == True:
        print('fbot interactive mode. first word will be used as nick')
        eiDii = 0
        while True:
            eiDii += 1
            try:
                inp = input('> ')
            except EOFError:
                exit(0)
            except:
                raise
            inpSplit = split_with_quotation_marks(inp)
            message = {
                'name': ''.join(inpSplit[:1]),
                'username': None,
                'message': stripFromBegin(inp, inpSplit[:1]),
                'id': eiDii,
            }
            for bot in botpackage.__all__:
                x = bot.processMessage(inpSplit[1:], message, db_connection)
                if x is not None:
                    print(x)
            print()

    if parsedArgs['mainchannel_on_my_own_risk'] == True:
        parsedArgs['channel'] = ''
    cookies = getCookies()
    while True:
        print('creating new websocket')
        ws = create_ws(cookies, parsedArgs)
        if ws:
            ws.run_forever()
        time.sleep(1)
Exemplo n.º 3
0
def processMessage(args, rawMessage, db_connection):
    if len(args) < 2:
        return None

    if args[0].lower() != '!' + _bottrigger.lower():
        return

    if args[1] == 'ping':
        return helper.botMessage('Hallu', _botname)

    elif args[1].lower() == 'ud':
        if len(args) <= 2:
            return helper.botMessage(_help_ud, _botname)
        term = stripFromBegin(rawMessage['message'], args[0:2])
        return helper.botMessage(ud.ud_parser(term), _botname)

    elif args[1].lower() == 'decide':
        if len(args) < 2:
            return
        antwort = '+' if ord(
            hashlib.sha1((
                rawMessage['message'].encode() +
                b'tpraR4gin8XHk_t3bGHZTJ206qc9vyV7LlUMTf655LNJDKGciVXKRLijqGkHgkpW <= Manfreds schlimmstes Geheimnis'
            )).hexdigest()[0]) % 2 == 1 else '-'
        return helper.botMessage(antwort, _botname)

    elif args[1].lower().startswith('sing'):
        parser = argparse.ArgumentParser(prog='!rita sing')
        parser.add_argument('song', nargs='?')
        parser.add_argument('-l', '--learn', action='store_true', dest='learn')
        parser.add_argument('-a', '--add', action='store_true', dest='learn')
        parser.add_argument('-r',
                            '--remove',
                            action='store_true',
                            dest='remove')
        parser.add_argument('-h', '--help', action='store_true')
        parser.add_argument('-c', '--count', action='store_true')
        parser.add_argument('-v', '--version', action='store_true')  # needed
        try:
            parsedArgs = vars(parser.parse_known_args(args[2:])[0])
        except argparse.ArgumentError:
            return helper.botMessage(parser.print_usage(), _botname)

        if (( parsedArgs['learn'] or parsedArgs['remove'] ) and parsedArgs['song'] == None) or \
           parsedArgs['help']:
            return helper.botMessage(parser.format_usage().rstrip('\n'),
                                     _botname)
        elif parsedArgs['version']:
            return helper.botMessage(
                'secret unlocked \o/ the first one calling w/ID gets some chocolate',
                _botmessage)

        if parsedArgs['learn']:
            return learntosing(parsedArgs['song'], db_connection)
        elif parsedArgs['remove']:
            if rawMessage['username'] in botMasters:
                return removeasong(parsedArgs['song'], db_connection)
            else:
                return helper.botMessage(
                    'DU bist nicht mein botmaster. ich bin gescheitert',
                    _botname)
        elif parsedArgs['count']:
            return helper.botMessage(
                'Ich kann schon %s Lieder singen :) *stolz*' %
                songCount(db_connection.cursor()), _botname)

        return helper.botMessage(singasong(db_connection.cursor()), _botname)

    elif args[1].lower() in [_slap_trigger, _featurerequest_trigger]:
        if len(args) == 2:
            return helper.botMessage('was meinst du?', _botname)

        target = stripFromBegin(rawMessage['message'], args[0:2])
        if args[1] == _slap_trigger:
            return helper.botMessage(
                '%s schlägt %s' %
                (_botname.replace('Dr. Ritastein', 'Rita'), target), _botname)
        elif args[1] == _featurerequest_trigger:
            return helper.botMessage('Ich will %s' % target, _botname)

    else:
        return helper.botMessage(_help, _botname)
Exemplo n.º 4
0
def processMessage(args, rawMessage, db_connection):
    cursor = db_connection.cursor()

    message = None

    if rawMessage['username'] != None:
        recipientNicks = [rawMessage['username'].lower()]
    else:
        recipientNicks = [rawMessage['name'].lower()]
    for nick in cursor.execute(
            'SELECT lower(nickname) '
            'FROM nicknames '
            'WHERE userid = ('
            'SELECT userid '
            'FROM nicknames '
            'WHERE lower(nickname) == ? '
            'ORDER BY deletable DESC'
            ');', (recipientNicks[0], )):
        if nick[0].lower() not in recipientNicks:
            recipientNicks.append(nick[0].lower())

    pingProperties = dict(print=True, delete=True)
    for nick in recipientNicks:
        cursor = db_connection.cursor()
        pongs = cursor.execute(
            'SELECT sender, message, messageid, id '
            'FROM pings '
            'WHERE lower(recipient) == ? '
            ';', (nick.lower(), )).fetchall()
        for pong in pongs:
            if pong[2] + _posts_since_ping > rawMessage['id']:
                pingProperties['print'] = False
            # ~ pongSplit = split_with_quotation_marks(pong[1])
            # ~ if len(pongSplit) >= 3 \
            # ~ and pongSplit[0].startswith('-') \
            # ~ and pongSplit[0][1:] == 'pong':
            # ~ pongTime = datetime.datetime(*parsedatetime.Calendar().parse(pongSplit[1])[0][:6])
            # ~ if datetime.datetime.now() < pongTime:
            # ~ pingProperties['print'] = False
            # ~ else:
            # ~ pingProperties['delete'] = False

            if pingProperties['print'] == True:
                if message == None:
                    message = rawMessage[
                        'name'] + ', dir wollte jemand etwas sagen:'
                message += '\n' + pong[0] + ' sagte: ' + pong[1]
            else:
                pingProperties['ping'] = True
            if pingProperties['delete']:
                cursor.execute('DELETE '
                               'FROM pings '
                               'WHERE id == ? '
                               ';', (pong[3], ))
        db_connection.commit()

    if len(args) >= 2 and args[0] == '!ping' and ''.join(args[2:]).strip(
            ''.join(_space_chars)) != '':
        cursor = db_connection.cursor()
        pingCount = cursor.execute(
            'SELECT count(*) '
            'FROM pings '
            'WHERE recipient == ? '
            'AND sender == ? '
            ';', (args[1], rawMessage['name'])).fetchone()
        if pingCount[0] == 0:
            cursor.execute(
                'INSERT OR REPLACE '
                'INTO pings '
                '(recipient, message, sender, messageid) '
                'VALUES (?, ?, ?, ?)'
                ';', (
                    args[1],
                    stripFromBegin(rawMessage['message'], args[0:2]),
                    rawMessage['name'],
                    rawMessage['id'],
                ))
        else:
            cursor.execute(
                'UPDATE pings '
                'SET message = ?, messageid = ? '
                'WHERE recipient = ? '
                'AND sender = ?'
                ';', (
                    ''.join(x + ' ' for x in args[2:]).strip(),
                    rawMessage['id'],
                    args[1],
                    rawMessage['name'],
                ))
        db_connection.commit()

    if message is not None:
        return helper.botMessage(message, _botname)
Exemplo n.º 5
0
def processMessage(args, rawMessage, db_connection):
	if len(args) < 2:
		return None

	if args[0].lower() != '!' + _bottrigger.lower():
		return

	if args[1] == 'ping':
		return helper.botMessage('Hallu', _botname)

	elif args[1].lower() == 'ud':
		return

	elif args[1].lower() == 'decide':
		return

	elif args[1].lower().startswith('sing'):
		return
		parser = argparse.ArgumentParser(prog='!rita sing')
		parser.add_argument('song', nargs='?')
		parser.add_argument('-l', '--learn', action='store_true', dest='learn')
		parser.add_argument('-a', '--add', action='store_true', dest='learn')
		parser.add_argument('-r', '--remove', action='store_true', dest='remove')
		parser.add_argument('-h', '--help', action='store_true')
		parser.add_argument('-c', '--count', action='store_true')
		parser.add_argument('-v', '--version', action='store_true') # needed
		try:
			parsedArgs = vars(parser.parse_known_args(args[2:])[0])
		except argparse.ArgumentError:
			return helper.botMessage(parser.print_usage(), _botname)

		if (( parsedArgs['learn'] or parsedArgs['remove'] ) and parsedArgs['song'] == None) or \
					parsedArgs['help']:
			return helper.botMessage(parser.format_usage().rstrip('\n'), _botname)
		elif parsedArgs['version']:
			return helper.botMessage('secret unlocked \o/ the first one calling w/ID gets some chocolate', _botname)

		if parsedArgs['learn']:
			return learntosing(parsedArgs['song'], db_connection)
		elif parsedArgs['remove']:
			if True or rawMessage['username'] in botMasters:
				return removeasong(parsedArgs['song'], db_connection)
			else:
				return helper.botMessage('DU bist nicht mein botmaster. ich bin gescheitert', _botname)
		elif parsedArgs['count']:
			return helper.botMessage('Ich kann schon %s Lieder singen :) *stolz*'%songCount(db_connection.cursor()), _botname)

		return helper.botMessage(singasong(db_connection.cursor()), _botname)

	elif args[1].lower() in [_slap_trigger, _featurerequest_trigger]:
		return
		if len(args) == 2:
			return helper.botMessage('was meinst du?', _botname)

		target = stripFromBegin(rawMessage['message'], args[0:2])
		if args[1] == _slap_trigger:
			return helper.botMessage('%s schlägt %s'%(_botname.replace('Dr. Ritastein', 'Rita'), target), _botname)
		elif args[1] == _featurerequest_trigger:
			return helper.botMessage('Ich will %s'%target, _botname)

	else:
		return helper.botMessage(_help, _botname)
Exemplo n.º 6
0
def processMessage(args, rawMessage, db_connection):
    if len(args) < 2:
        return None

    if args[0].lower() != '!' + _bottrigger.lower():
        return

    if args[1] == 'ping':
        return helper.botMessage('Hallu', _botname)

    elif args[1].lower() == 'ud':
        if len(args) <= 2:
            return helper.botMessage(_help_ud, _botname)
        term = stripFromBegin(rawMessage['message'], args[0:2])
        return helper.botMessage(ud.ud_parser(term), _botname)

    elif args[1].lower() == 'decide':
        if len(args) < 2:
            return
        antwort = '+' if ord(
            hashlib.sha1((
                rawMessage['message'].encode() +
                b'tpraR4gin8XHk_t3bGHZTJ206qc9vyV7LlUMTf655LNJDKGciVXKRLijqGkHgkpW <= Manfreds schlimmstes Geheimnis'
            )).hexdigest()[0]) % 2 == 1 else '-'
        return helper.botMessage(antwort, _botname)

    elif args[1].lower() == 'sing':
        parser = argparse.ArgumentParser()
        parser.add_argument('song', nargs='?')
        parser.add_argument('-l', '--learn', action='store_true', dest='learn')
        parser.add_argument('-r',
                            '--remove',
                            action='store_true',
                            dest='remove')
        try:
            parsedArgs = vars(parser.parse_args(args[2:]))
        except argparse.ArgumentError:
            return helper.botMessage(_help_sing, _botname)

        if (parsedArgs['learn']
                or parsedArgs['remove']) and parsedArgs['song'] is None:
            return helper.botMessage(_help_sing, _botname)

        if parsedArgs['learn']:
            return learntosing(parsedArgs['song'], db_connection)
        elif parsedArgs['remove']:
            return helper.botMessage(
                removeasong(parsedArgs['song'], db_connection), _botname)

        return helper.botMessage(singasong(db_connection.cursor()), _botname)

    elif args[1].lower() in [_slap_trigger, _featurerequest_trigger]:
        if len(args) == 2:
            return helper.botMessage('was meinst du?', _botname)

        target = stripFromBegin(rawMessage['message'], args[0:2])
        if args[1] == _slap_trigger:
            return helper.botMessage('%s schlägt %s' % (_botname, target),
                                     _botname)
        elif args[1] == _featurerequest_trigger:
            return helper.botMessage('Ich will %s' % target, _botname)

    else:
        return helper.botMessage(_help, _botname)