docs: 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)