matrix_chatgpt_bot/src/main.py

89 lines
3.5 KiB
Python
Raw Normal View History

2023-04-13 15:22:24 +00:00
import asyncio
2023-03-05 14:07:25 +00:00
import json
2023-04-10 02:52:18 +00:00
import os
2023-06-05 03:27:37 +00:00
from pathlib import Path
2023-09-13 06:36:35 +00:00
2023-03-05 14:07:25 +00:00
from bot import Bot
2023-04-10 02:52:18 +00:00
from log import getlogger
2023-03-05 14:07:25 +00:00
2023-04-10 02:52:18 +00:00
logger = getlogger()
2023-03-05 14:07:25 +00:00
2023-04-11 05:42:43 +00:00
2023-03-05 14:07:25 +00:00
async def main():
2023-04-20 07:39:14 +00:00
need_import_keys = False
2023-06-05 03:27:37 +00:00
config_path = Path(os.path.dirname(__file__)).parent / "config.json"
if os.path.isfile(config_path):
2023-09-13 06:36:35 +00:00
fp = open(config_path, encoding="utf8")
config = json.load(fp)
2023-04-11 05:42:43 +00:00
matrix_bot = Bot(
homeserver=config.get("homeserver"),
user_id=config.get("user_id"),
password=config.get("password"),
device_id=config.get("device_id"),
room_id=config.get("room_id"),
2023-06-05 03:27:37 +00:00
openai_api_key=config.get("openai_api_key"),
api_endpoint=config.get("api_endpoint"),
access_token=config.get("access_token"),
bard_token=config.get("bard_token"),
jailbreakEnabled=config.get("jailbreakEnabled"),
bing_auth_cookie=config.get("bing_auth_cookie"),
markdown_formatted=config.get("markdown_formatted"),
output_four_images=config.get("output_four_images"),
import_keys_path=config.get("import_keys_path"),
import_keys_password=config.get("import_keys_password"),
flowise_api_url=config.get("flowise_api_url"),
flowise_api_key=config.get("flowise_api_key"),
pandora_api_endpoint=config.get("pandora_api_endpoint"),
pandora_api_model=config.get("pandora_api_model"),
2023-06-05 03:27:37 +00:00
temperature=float(config.get("temperature", 0.8)),
)
if (
config.get("import_keys_path")
and config.get("import_keys_password") is not None
):
2023-04-20 07:39:14 +00:00
need_import_keys = True
else:
matrix_bot = Bot(
homeserver=os.environ.get("HOMESERVER"),
user_id=os.environ.get("USER_ID"),
password=os.environ.get("PASSWORD"),
device_id=os.environ.get("DEVICE_ID"),
room_id=os.environ.get("ROOM_ID"),
2023-06-05 03:27:37 +00:00
openai_api_key=os.environ.get("OPENAI_API_KEY"),
api_endpoint=os.environ.get("API_ENDPOINT"),
access_token=os.environ.get("ACCESS_TOKEN"),
bard_token=os.environ.get("BARD_TOKEN"),
jailbreakEnabled=os.environ.get("JAILBREAKENABLED", "false").lower()
in ("true", "1", "t"),
bing_auth_cookie=os.environ.get("BING_AUTH_COOKIE"),
markdown_formatted=os.environ.get("MARKDOWN_FORMATTED", "false").lower()
in ("true", "1", "t"),
output_four_images=os.environ.get("OUTPUT_FOUR_IMAGES", "false").lower()
in ("true", "1", "t"),
import_keys_path=os.environ.get("IMPORT_KEYS_PATH"),
import_keys_password=os.environ.get("IMPORT_KEYS_PASSWORD"),
flowise_api_url=os.environ.get("FLOWISE_API_URL"),
flowise_api_key=os.environ.get("FLOWISE_API_KEY"),
pandora_api_endpoint=os.environ.get("PANDORA_API_ENDPOINT"),
pandora_api_model=os.environ.get("PANDORA_API_MODEL"),
2023-06-05 03:27:37 +00:00
temperature=float(os.environ.get("TEMPERATURE", 0.8)),
)
if (
os.environ.get("IMPORT_KEYS_PATH")
and os.environ.get("IMPORT_KEYS_PASSWORD") is not None
):
2023-04-20 07:39:14 +00:00
need_import_keys = True
2023-04-10 02:52:18 +00:00
await matrix_bot.login()
2023-04-20 07:39:14 +00:00
if need_import_keys:
logger.info("start import_keys process, this may take a while...")
await matrix_bot.import_keys()
2023-04-10 11:37:43 +00:00
await matrix_bot.sync_forever(timeout=30000, full_state=True)
2023-03-05 14:07:25 +00:00
if __name__ == "__main__":
logger.info("matrix chatgpt bot start.....")
asyncio.run(main())