def METHOD_NAME(self):
    if not any([self.content, self.file, self.embeds]):
        raise Exception(
            "Webhook must contain at least one " "of (content, file, embeds).",
        )
    if self.content and len(self.content) > 2000:
        raise Exception("Webhook content must be under " "2000 characters.")
    payload = {"embeds": []}
    for key in ("content", "username", "avatar_url", "tts", "file"):
        val = getattr(self, key)
        if val is not None:
            payload[key] = val
    for embed in self.embeds:
        embed_payload = {}
        # simple params
        for key in ("title", "type", "description", "url", "timestamp", "color"):
            val = getattr(embed, key)
            if val is not None:
                embed_payload[key] = val
        # class params, must turn into dict
        for key in ("footer", "image", "thumbnail", "video", "provider", "author"):
            val = getattr(embed, key)
            if val is not None:
                embed_payload[key] = val.__dict__
        if embed.fields:
            embed_payload["fields"] = [f.__dict__ for f in embed.fields]
        payload["embeds"].append(embed_payload)
    return orjson.dumps(payload).decode()