|
|
- import os
- from rocketchat.api import RocketChatAPI
- import configparser
- import json
- import requests
-
- config = configparser.ConfigParser()
- config.read('config.ini')
-
- botname = config['Chat']['username']
- botpassword = config['Chat']['password']
- server_url = config['Chat']['URL']
- room_id = config['Chat']['room_id']
- bot_user_id = config['Chat']['bot_user_id']
- spider_directory = config['Spider']['spider_directory']
-
- # here comes the functions to talk to gpt
-
-
- # For local streaming, the websockets are hosted without ssl - http://
- HOST = 'localhost:5000'
- URI = f'http://{HOST}/api/v1/chat'
- #URI = f'http://{HOST}/api'
-
- # http://192.168.9.197:5000/api/v1/chat
-
- # For reverse-proxied streaming, the remote will likely host with ssl - https://
- # URI = 'https://your-uri-here.trycloudflare.com/api/v1/chat'
-
-
- if __name__ == '__main__':
-
-
- api = RocketChatAPI(settings={'username': botname, 'password': botpassword, 'domain': server_url})
-
-
- # api.send_message('Ciao, I am the fdb-spider', room_id)
-
- # myinfo = api.get_my_info()
-
- # print(myinfo)
- # rooms = api.get_private_rooms()
-
- # print(rooms)
-
- # api.send_message('Ole', room_id)
-
- n = 0
-
- import time
- import schedule
-
- def getroomdata():
-
- room_list = []
- rooms = os.listdir('rooms')
- for room in rooms:
- room_file = open('rooms/' + room, 'r')
- room_file_raw = room_file.read()
- room_file.close()
-
- room_file_list = room_file_raw.split('§%§%')
- room_list.append([room[:-3], room_file_list[0], room_file_list[1], room_file_list[2]])
-
- return room_list
-
-
-
-
- import datetime
- from datetime import timedelta
- while True:
- time.sleep(4)
-
-
-
-
- n += 1
- print(n)
-
- try:
- #print('getting the room history')
- date = datetime.datetime.now() - timedelta(days=3)
- room_history = api.get_private_room_history(room_id, oldest=date)
- except Exception as e:
- time.sleep(10)
- api = RocketChatAPI(settings={'username': botname, 'password': botpassword, 'domain': server_url})
- time.sleep(5)
- room_history = api.get_private_room_history(room_id, oldest=date)
- print('got a connection error, original message is:',e)
-
-
-
- messages_list = []
-
-
- for message in room_history['messages']:
- messages_list.append(message)
-
- if len(messages_list) >= 1:
-
- #print('blub', messages_list)
-
- latest_message_user_id = messages_list[0]['u']['_id']
-
- latest_message_user_username = messages_list[0]['u']['username']
-
- latest_message = messages_list[0]['msg']
-
- latest_message_id = messages_list[0]['_id']
-
- new_message_file = open('new_message_file.txt', 'r')
- new_message = new_message_file.read()
- new_message_file.close()
-
- new_message_list = new_message.split('§%§%')
- #print(latest_message, new_message_list[0])
-
- if new_message_list[0] != latest_message and new_message_list[1] != latest_message_id and latest_message_user_id != bot_user_id:
-
- answer = 'Ich habe kein Kommando erhalten.'
-
- new_message_file = open('new_message_file.txt', 'w')
- new_message_file.write(latest_message + '§%§%' + latest_message_id)
- new_message_file.close()
-
-
- user_input = latest_message
- user_input_list = user_input.split(' ')
-
-
-
-
- if user_input_list[0] == 'printrooms':
- # get all the rooms
- import os
-
- room_list = []
- rooms = os.listdir('rooms')
- for room in rooms:
- room_file = open('rooms/' + room, 'r')
- room_file_raw = room_file.read()
- room_file.close()
-
- room_file_list = room_file_raw.split('§%§%')
- room_list.append([room[:-3], room_file_list[0], room_file_list[1], room_file_list[2]])
-
- #print(room_list)
- answer = str(room_list)
-
-
- if user_input_list[0] == 'createroom':
- try:
- room_name = user_input_list[1]
- except Exception as e:
- room_name = 'NONE'
- print(e)
- try:
- databases = user_input_list[2]
- except Exception as e:
- databases = 'NONE'
- print(e)
- try:
- filters = user_input_list[3]
- except Exception as e:
- filters = 'NONE'
- print(e)
-
- if len(user_input_list) > 3:
- answer = 'Die Syntax hat einen Fehler. Wahrscheinlich sind Leerzeichen in den Listen. Leerzeichen definieren die Syntax. Versuche es erneut, nach dem Muster -> createroom room1 ["fdb1","fdb2"] ["tag1","tag2"]'
-
- if room_name == 'NONE' or databases == 'NONE' or filters == 'NONE':
- answer = 'Um einen Raum zu erstellen, in dem neueste Einträge geteilt werden, lautet die Syntax: createroom <Raumname> <Liste-Datenbanken> <Liste-Filtertags>'
-
- else:
- new_room = api.create_public_room(room_name,
- members=[latest_message_user_username],
- read_only=True)
-
-
- new_room_id = new_room['channel']['_id']
- room_file = open('rooms/' + new_room_id + '.txt', 'w')
- room_file.write( room_name + '§%§%' + databases + '§%§%' + filters)
- room_file.close()
- answer = 'Der Command wurde übermittelt'
-
-
- #print('oi', user_input)
- api.send_message('Die Anfrage wird bearbeitet..', room_id)
-
- # here comes the code interacting with the spiders output json
-
-
-
-
- #answer = 'the up to date entries are: oi Oi Oi!'
-
- api.send_message(answer, room_id)
- time.sleep(1)
- api.send_message('Ich bin wieder bereit für Konfigurationsinput : )', room_id)
- time.sleep(1)
-
|