From 0ffd06e1627c17cc970e44cce538610ab5d69014 Mon Sep 17 00:00:00 2001 From: Eric Meehan Date: Sun, 9 Feb 2025 10:43:45 -0500 Subject: [PATCH] Matrix logging is functional --- app.py | 6 ++++-- kraken_bot/KrakenBot.py | 2 +- kraken_bot/MatrixLogger.py | 29 +++++++++++++++++------------ kraken_bot/TradingStrategy.py | 4 ++-- requirements.txt | 3 ++- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/app.py b/app.py index c5a35ba..62184a3 100644 --- a/app.py +++ b/app.py @@ -1,3 +1,5 @@ +import asyncio + from dotenv import load_dotenv from kraken_bot.KrakenBot import KrakenBot @@ -13,5 +15,5 @@ bot = KrakenBot( ) if __name__ == '__main__': - bot.update(full=True) - bot.execute() + asyncio.run(bot.update(full=True)) + asyncio.run(bot.execute()) diff --git a/kraken_bot/KrakenBot.py b/kraken_bot/KrakenBot.py index 441976f..e45ef0e 100644 --- a/kraken_bot/KrakenBot.py +++ b/kraken_bot/KrakenBot.py @@ -12,7 +12,7 @@ class KrakenBot(KrakenAPI): def __init__(self, tier, model, trading_strategy): self.model = model self.trading_strategy = trading_strategy - self.log = MatrixLogger(self.__class__.__name__) + self.log = MatrixLogger(str(self.__class__.__name__)) super().__init__(krakenex.API(os.getenv('KRAKEN_API_TOKEN'), os.getenv('KRAKEN_API_SEC')), tier=tier) self.update(full=True) diff --git a/kraken_bot/MatrixLogger.py b/kraken_bot/MatrixLogger.py index 83fbb03..cdc0a0d 100644 --- a/kraken_bot/MatrixLogger.py +++ b/kraken_bot/MatrixLogger.py @@ -1,29 +1,34 @@ +import asyncio import logging import os -from nio import HttpClient, MatrixRoom, RoomMessageText +from nio import AsyncClient, MatrixRoom, RoomMessageText class MatrixHandler(logging.Handler): def __init__(self): super().__init__() - self.homeserver_address = os.getenv('MATRIX_HOMESERVER_ADDRESS'), - self.user_id = os.getenv('MATRIX_USER_ID'), - self.user_password = os.getenv('MATRIX_USER_PASSWORD'), + self.address = os.getenv('MATRIX_HOMESERVER_ADDRESS') + self.user_id = os.getenv('MATRIX_USER_ID') + self.user_password = os.getenv('MATRIX_USER_PASSWORD') self.room_id = os.getenv('MATRIX_ROOM_ID') - self.client = HttpClient(self.address, self.user_id) - self.client.add_event_callback(self.message_callback, RoomMessageText) - self.client.login(self.user_password) + self.device_id = os.getenv('MATRIX_DEVICE_ID') def message_callback(self, room: MatrixRoom, event: RoomMessageText) -> None: return - def emit(self, record): - self.client.room_send( + async def send_to_matrix(self, record): + client = AsyncClient(self.address, self.user_id) + await client.login(self.user_password, self.device_id) + client.add_event_callback(self.message_callback, RoomMessageText) + await client.room_send( self.room_id, message_type='m.room.message', - content={'msgtype': 'm.text', 'body': record} + content={'msgtype': 'm.text', 'body': self.formatter.format(record)} ) + def emit(self, record): + asyncio.run(self.send_to_matrix(record)) + class MatrixLogger: def __init__(self, name): self.log = logging.getLogger(name) @@ -31,11 +36,11 @@ class MatrixLogger: console_handler = logging.StreamHandler() console_handler.setLevel(os.getenv('LOG_LEVEL', 'INFO')) - console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %{name}s - %(message)s')) + console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s')) matrix_handler = MatrixHandler() matrix_handler.setLevel(os.getenv('LOG_LEVEL', 'INFO')) - matrix_handler.setFormatter(logging.Formatter('%(levelname)s - %{name}s - %(message)s')) + matrix_handler.setFormatter(logging.Formatter('%(levelname)s - %(name)s - %(message)s')) self.log.addHandler(console_handler) self.log.addHandler(matrix_handler) diff --git a/kraken_bot/TradingStrategy.py b/kraken_bot/TradingStrategy.py index 321e240..3adfc06 100644 --- a/kraken_bot/TradingStrategy.py +++ b/kraken_bot/TradingStrategy.py @@ -6,8 +6,8 @@ from kraken_bot.MatrixLogger import MatrixLogger class TradingStrategy(ABC): def __init__(self): - self.investment_count = int(os.getenv('INVESTMENT_COUNT')), - self.investment_volume = float(os.getenv('INVESTMENT_VOLUME')), + self.investment_count = int(os.getenv('INVESTMENT_COUNT')) + self.investment_volume = float(os.getenv('INVESTMENT_VOLUME')) self.log = MatrixLogger(self.__class__.__name__) self.orders = [] diff --git a/requirements.txt b/requirements.txt index ec05604..8fba69d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ krakenex -nio +matrix-nio pykrakenapi python-dotenv +scipy backtrader matplotlib