treehouse-bridge/misskey.app.py
Jadowyne Ulve fea2efefc8 Created and coded bridges between misskey,
mattermost, and discord
2025-06-08 10:44:58 -05:00

59 lines
2.1 KiB
Python

import asyncio
import websockets
import misskey
import json
import requests
from io import BytesIO
import bridges
MISSKEY_INSTANCE = "misskey.treehousefullofstars.com"
MISSKEY_TOKEN = "JSvVuz1eS2BGq6MagdQC9m109gOllwcO"
msk = misskey.Misskey(address=MISSKEY_INSTANCE, i=MISSKEY_TOKEN)
MY_ID = msk.i()['id']
WS_URL=f"wss://{MISSKEY_INSTANCE}/streaming"
channels = ['localTimeline', 'globalTimeline' 'hybridTimeline', 'main']
async def event_handler(event):
event = json.loads(event)
if event['body']['type'] == "note":
bridges.send_misskey_to_mattermost(event, "fkcqa3qj83gu3bfikcu55sfwww")
async def connect_and_listen():
while True:
try:
print("Connecting to WebSocket...")
async with websockets.connect(WS_URL) as websocket:
print("Connected to WebSocket")
# Subscribe to the channels
for channel in channels:
subscription_request = {
"type": "connect",
"body": {
"channel": channel,
"id": MY_ID,
"access_token": MISSKEY_TOKEN
}
}
await websocket.send(json.dumps(subscription_request))
print(f"Sent subscription request for {channel} channel with ID: {MY_ID}")
response = await websocket.recv()
print(f"Received response for {channel} channel: {response}")
await event_handler(response)
# Listen for messages
#while True:
# async for message in websocket:
# await handle_message(websocket, message)
except websockets.exceptions.ConnectionClosedError as e:
print(f"Connection closed unexpectedly: {e}")
await asyncio.sleep(5) # Wait for 5 seconds before retrying
except Exception as e:
print(f"An error occurred: {e}")
await asyncio.sleep(5) # Wait for 5 seconds before retrying
if __name__ == "__main__":
asyncio.run(connect_and_listen())