From 6de82f10a0a55842717b8e59d6c7b760154203f0 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 27 Jan 2018 23:21:51 +0200 Subject: [PATCH] Add support for displayname preferences --- example-config.yaml | 16 ++++++++-------- mautrix_telegram/puppet.py | 23 +++++++++++++++-------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/example-config.yaml b/example-config.yaml index a17af508..da59d47d 100644 --- a/example-config.yaml +++ b/example-config.yaml @@ -46,16 +46,16 @@ bridge: # very well be empty. # # Valid keys: - # fullName (First and/or last name) - # fullNameReversed (Last and/or first name) - # firstName - # lastName - # username - # phoneNumber + # "full name" (First and/or last name) + # "full name reversed" (Last and/or first name) + # "first name" + # "last name" + # "username" + # "phone number" displayname_preference: - - fullName + - full name - username - - phoneNumber + - phone number # The prefix for commands. Only required in non-management rooms. diff --git a/mautrix_telegram/puppet.py b/mautrix_telegram/puppet.py index eb3bf370..0bae3c74 100644 --- a/mautrix_telegram/puppet.py +++ b/mautrix_telegram/puppet.py @@ -58,14 +58,21 @@ class Puppet: @staticmethod def get_displayname(info, format=True): - if info.first_name or info.last_name: - name = " ".join([info.first_name or "", info.last_name or ""]).strip() - elif info.username: - name = info.username - elif info.phone_number: - name = info.phone_number - else: - name = info.id + data = { + "phone_number": info.phone, + "username": info.username, + "full name": " ".join([info.first_name or "", info.last_name or ""]).strip(), + "full name reversed": " ".join([info.first_name or "", info.last_name or ""]).strip(), + "first name": info.first_name, + "last_name": info.last_name, + } + preferences = config.get("bridge", {}).get("displayname_preference", + ["full name", "username", "phone"]) + for preference in preferences: + name = data[preference] + if name: + break + if not format: return name return config.get("bridge.displayname_template", "{} (Telegram)").format(name)