Add support for avatars in webhooks
This commit is contained in:
parent
a4c1f17e13
commit
7de214342b
2 changed files with 19 additions and 5 deletions
|
@ -15,4 +15,4 @@ A simple Matrix-Discord bridge written in Python.
|
||||||
## What Works
|
## What Works
|
||||||
|
|
||||||
- [x] Sending messages
|
- [x] Sending messages
|
||||||
- [x] Discord webhooks
|
- [x] Discord webhooks (with avatars)
|
||||||
|
|
22
main.py
22
main.py
|
@ -48,7 +48,7 @@ async def on_message(message):
|
||||||
if message.author.bot:
|
if message.author.bot:
|
||||||
return
|
return
|
||||||
|
|
||||||
message_ = f"<{message.author}> {message.content}"
|
message_ = f"<{message.author.name}> {message.content}"
|
||||||
|
|
||||||
if str(message.channel.id) == config["channel_id"]:
|
if str(message.channel.id) == config["channel_id"]:
|
||||||
await message_send(message_)
|
await message_send(message_)
|
||||||
|
@ -72,7 +72,7 @@ async def emote(message):
|
||||||
return message
|
return message
|
||||||
|
|
||||||
|
|
||||||
async def webhook_send(author, message):
|
async def webhook_send(author, avatar, message):
|
||||||
# Get Discord channel from channel ID
|
# Get Discord channel from channel ID
|
||||||
channel = int(config["channel_id"])
|
channel = int(config["channel_id"])
|
||||||
channel = discord_client.get_channel(channel)
|
channel = discord_client.get_channel(channel)
|
||||||
|
@ -87,7 +87,7 @@ async def webhook_send(author, message):
|
||||||
# Replace emote names
|
# Replace emote names
|
||||||
message = await emote(message)
|
message = await emote(message)
|
||||||
|
|
||||||
await hook.send(content=message, username=author)
|
await hook.send(username=author, avatar_url=avatar, content=message)
|
||||||
|
|
||||||
|
|
||||||
async def create_matrix_client():
|
async def create_matrix_client():
|
||||||
|
@ -133,7 +133,21 @@ async def message_callback(room, event):
|
||||||
if event.sender == matrix_client.user:
|
if event.sender == matrix_client.user:
|
||||||
return
|
return
|
||||||
|
|
||||||
await webhook_send(event.sender, message)
|
author = event.sender[1:]
|
||||||
|
avatar = None
|
||||||
|
|
||||||
|
# Get avatar
|
||||||
|
for user in room.users.values():
|
||||||
|
if user.user_id == event.sender:
|
||||||
|
if user.avatar_url:
|
||||||
|
homeserver = author.split(":")[-1]
|
||||||
|
|
||||||
|
avatar = user.avatar_url.split("/")[-1]
|
||||||
|
avatar = "https://matrix.org/_matrix/media/r0/download/" \
|
||||||
|
+ f"{homeserver}/{avatar}"
|
||||||
|
break
|
||||||
|
|
||||||
|
await webhook_send(author, avatar, message)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
Loading…
Reference in a new issue