Matrix logging is functional

This commit is contained in:
Eric Meehan 2025-02-09 10:43:45 -05:00
parent ce9b611843
commit 0ffd06e162
5 changed files with 26 additions and 18 deletions

6
app.py
View File

@ -1,3 +1,5 @@
import asyncio
from dotenv import load_dotenv from dotenv import load_dotenv
from kraken_bot.KrakenBot import KrakenBot from kraken_bot.KrakenBot import KrakenBot
@ -13,5 +15,5 @@ bot = KrakenBot(
) )
if __name__ == '__main__': if __name__ == '__main__':
bot.update(full=True) asyncio.run(bot.update(full=True))
bot.execute() asyncio.run(bot.execute())

View File

@ -12,7 +12,7 @@ class KrakenBot(KrakenAPI):
def __init__(self, tier, model, trading_strategy): def __init__(self, tier, model, trading_strategy):
self.model = model self.model = model
self.trading_strategy = trading_strategy 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) super().__init__(krakenex.API(os.getenv('KRAKEN_API_TOKEN'), os.getenv('KRAKEN_API_SEC')), tier=tier)
self.update(full=True) self.update(full=True)

View File

@ -1,29 +1,34 @@
import asyncio
import logging import logging
import os import os
from nio import HttpClient, MatrixRoom, RoomMessageText from nio import AsyncClient, MatrixRoom, RoomMessageText
class MatrixHandler(logging.Handler): class MatrixHandler(logging.Handler):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.homeserver_address = os.getenv('MATRIX_HOMESERVER_ADDRESS'), self.address = os.getenv('MATRIX_HOMESERVER_ADDRESS')
self.user_id = os.getenv('MATRIX_USER_ID'), self.user_id = os.getenv('MATRIX_USER_ID')
self.user_password = os.getenv('MATRIX_USER_PASSWORD'), self.user_password = os.getenv('MATRIX_USER_PASSWORD')
self.room_id = os.getenv('MATRIX_ROOM_ID') self.room_id = os.getenv('MATRIX_ROOM_ID')
self.client = HttpClient(self.address, self.user_id) self.device_id = os.getenv('MATRIX_DEVICE_ID')
self.client.add_event_callback(self.message_callback, RoomMessageText)
self.client.login(self.user_password)
def message_callback(self, room: MatrixRoom, event: RoomMessageText) -> None: def message_callback(self, room: MatrixRoom, event: RoomMessageText) -> None:
return return
def emit(self, record): async def send_to_matrix(self, record):
self.client.room_send( 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, self.room_id,
message_type='m.room.message', 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: class MatrixLogger:
def __init__(self, name): def __init__(self, name):
self.log = logging.getLogger(name) self.log = logging.getLogger(name)
@ -31,11 +36,11 @@ class MatrixLogger:
console_handler = logging.StreamHandler() console_handler = logging.StreamHandler()
console_handler.setLevel(os.getenv('LOG_LEVEL', 'INFO')) 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 = MatrixHandler()
matrix_handler.setLevel(os.getenv('LOG_LEVEL', 'INFO')) 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(console_handler)
self.log.addHandler(matrix_handler) self.log.addHandler(matrix_handler)

View File

@ -6,8 +6,8 @@ from kraken_bot.MatrixLogger import MatrixLogger
class TradingStrategy(ABC): class TradingStrategy(ABC):
def __init__(self): def __init__(self):
self.investment_count = int(os.getenv('INVESTMENT_COUNT')), self.investment_count = int(os.getenv('INVESTMENT_COUNT'))
self.investment_volume = float(os.getenv('INVESTMENT_VOLUME')), self.investment_volume = float(os.getenv('INVESTMENT_VOLUME'))
self.log = MatrixLogger(self.__class__.__name__) self.log = MatrixLogger(self.__class__.__name__)
self.orders = [] self.orders = []

View File

@ -1,6 +1,7 @@
krakenex krakenex
nio matrix-nio
pykrakenapi pykrakenapi
python-dotenv python-dotenv
scipy
backtrader backtrader
matplotlib matplotlib