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)
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)
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)
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)
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)
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)