treehouse-bridge/mattermost.app.py
Jadowyne Ulve 99d606f2a1 added bot
2025-06-08 15:19:49 -05:00

66 lines
2.7 KiB
Python

import requests, json
from mattermostdriver import Driver
import bridges
channels = {
"ibfp3fskai8adgmynbfispz3se": 1125968295967850559, #comforter
"rb43iupdy7rjbjwhg9w9c1mzjy": 954201387770736754, # lounge
"s6muherhotfoircc1yzmwr5wty": 1119502004721557554, # kweh
"fkcqa3qj83gu3bfikcu55sfwww": 1367978276185964584, #misskey
"na4doo5f83ykbc45m9a5dn513a": 1167176429797113926, #photos-from-another-star
"9ydcz9orepbtmedncb7idh43hr": 1119508652844404816, #bulletin-board
"81qmzfzeeif7mmfhpy7hkxnjuc": 955394194766192690 #photos-of-the-gang
}
users = {
"f3nja8t9fpy73cxeh5ykzrozaw": 407247496008433675,
"3byr3scix3f78xs5bpmgqzc6pc": 189202462442389514,
"kr54p4xupt8kxj1s1c39be4w3r": 1183070660621250702
}
async def event_handler(event):
event = json.loads(event)
if 'event' in event.keys() and event['event'] == "posted":
print("event:", event)
event_data = event['data']
post = event_data['post']
post = json.loads(post)
if post['channel_id'] in channels.keys():
print(f"watched channel {post['channel_id']}")
if 'from_webhook' in post['props'].keys():
is_webhook = post['props']['from_webhook']
else:
is_webhook = "false"
print(is_webhook)
if is_webhook != "true":
# add file syncing means you need to get the "file_ids" key from the post and then download them into blobs and pass those along
# to the request as files, on the discord side those files would then get attached to the webhook.
user = mattermostDriver.users.get_user(user_id=post['user_id'])
#print(user)
post['user'] = user
discord_id = None
print("user:", user)
if user['id'] in users.keys():
discord_id = users[post['user']['id']]
post['discord_id'] = discord_id
bridges.send_mattermost_to_discord(post, channel_to=channels[post['channel_id']])
elif post['channel_id'] == "fkcqa3qj83gu3bfikcu55sfwww" and is_webhook == "true":
username = post['props']['override_username']
avatar_url = post['props']['override_icon_url']
user = {"nickname": username}
post['user'] = user
post['discord_id'] = None
bridges.send_mattermost_to_discord(post, channel_to=channels[post['channel_id']], avatar_url=avatar_url)
mattermostDriver = Driver({
"url": "192.168.1.67",
"port": 8065,
"scheme": "http",
"token": "dmefeb8t7pditf3ot9377hrxch"
})
mattermostDriver.login()
mattermostDriver.init_websocket(event_handler)