Refactor this to make it easier to understand, less bug prone, more performant, and adhere to best practices. 

```python
async def _get_thread_as_script(self, context: BoltContext, ts, channel_id):
        retval = ""

        replies = await context.client.conversations_replies(
            channel=channel_id,
            ts=ts,
            inclusive=True,
            limit=100,
            token=context.user_token,
        )
        users = {r["user"] for r in replies["messages"] if "user" in r}
        reaction_users = {
            r2
            for r in replies["messages"]
            if "reactions" in r
            for reaction in r["reactions"]
            for r2 in reaction["users"]
        }
        users = users.union(reaction_users)
        usernames = await self.user_cache.get_usernames(context, users)

        for r in replies["messages"]:
            username = usernames[r["user"]]
            retval += f"*{username}*: {r['text']}\n\n"

            if "reactions" in r:
                retval += await self._get_reactions_as_text(context, r["reactions"])

        return retval
```
ปรับโครงสร้างใหม่เพื่อให้เข้าใจได้ง่ายขึ้น เสี่ยงต่อจุดบกพร่องน้อยลง มีประสิทธิภาพมากขึ้น และปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด ```python async def _get_thread_as_script (ตัวเอง, บริบท: BoltContext, ts, channel_id): retval = "" replies = await context.client.conversations_replies( channel=channel_id, ts=ts, รวม=True, จำกัด=100, โทเค็น= context.user_token, ) users = {r["user"] สำหรับ r ในการตอบกลับ ["ข้อความ"] ถ้า "ผู้ใช้" ใน r} reaction_users = { r2 สำหรับ r ในการตอบกลับ ["ข้อความ"] ถ้า "ปฏิกิริยา" ใน r สำหรับ ปฏิกิริยาใน r["reactions"] สำหรับ r2 ในปฏิกิริยา ["ผู้ใช้"] } users = users.union(reaction_users) ชื่อผู้ใช้ = รอ self.user_cache.get_usernames(บริบท ผู้ใช้) สำหรับ r ในการตอบกลับ["ข้อความ"]: ชื่อผู้ใช้ = ชื่อผู้ใช้[r["user"]] retval += f"*{username}*: {r['text']}\n\n" if "reactions" in r: retval += await self._get_reactions_as_text(context) , r["reactions"]) ส่งคืนการย้อนกลับ ```
spam lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor creativity violence