``` 
async def _get_thread_as_script(self, context: BoltContext, ts, channel_id):
# Initialize empty lists and sets
messages = []
users = set()
reactions = []

# Retrieve message replies from Slack API
replies = await context.client.conversations_replies(
    channel=channel_id,
    ts=ts,
    inclusive=True,
    limit=100,
    token=context.user_token
)

# Loop through all messages and add them to the messages list
for r in replies["messages"]:
    if "user" in r:
        users.add(r["user"])  # Add the user ID to the users set
    if "reactions" in r:
        reactions.extend(r["reactions"])  # Add the reactions to the reactions list
    messages.append(r)  # Add the message to the messages list

# Retrieve usernames from cache for all user IDs in the users set
usernames = await self.user_cache.get_usernames(context, users)

# Initialize the return value
retval = ""

# Loop through all messages and concatenate usernames and messages
for r in messages:
    username = usernames.get(r["user"], "unknown user")  # Get the username from the cache or use a default value
    retval += f"*{username}*: {r['text']}\n\n"  # Concatenate the username and message text

    # If the message has reactions, add them to the return value
    if r.get("reactions"):
        retval += await self._get_reactions_as_text(context, r["reactions"])

return retval
```
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence