Decode <@id> and <!alias> into @username.

def decode(self, text: str, prefix: str = "@") -> str:
        """Decode <@id> and <!alias> into @username."""

        def callback(match: Match) -> str:
            m = match.groupdict()
            if m["userid"]:
                user = self.users.get(m["userid"], None)
                if user is None:
                    username = m["userid"]
                else:
                    username = user.name
            elif m["alias"]:
                username = m["alias"]
            return f"{prefix}{username}"

        return self.decode_re.sub(callback, text)