We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Copy message on respond
When a message responds it updates it's `text` value and passes itself to the connector.  Due to pointers in Python the next rule to parse the message goes on to parse the response text.

The message respond method should create a shallow copy of itself to pass to the connector, instead of updating itself directly.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `opsdroid/message.py`
Content:
```
1 """Class to encapsulate a message."""
2 
3 
4 class Message:
5     # pylint: disable=too-few-public-methods
6     """A message object."""
7 
8     def __init__(self, text, user, room, connector):
9         """Create object with minimum properties."""
10         self.text = text
11         self.user = user
12         self.room = room
13         self.connector = connector
14         self.regex = None
15 
16     def respond(self, text):
17         """Respond to this message using the connector it was created by."""
18         self.text = text
19         self.connector.respond(self)
20
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/opsdroid/message.py b/opsdroid/message.py
--- a/opsdroid/message.py
+++ b/opsdroid/message.py
@@ -1,5 +1,7 @@
 """Class to encapsulate a message."""
 
+from copy import copy
+
 
 class Message:
     # pylint: disable=too-few-public-methods
@@ -15,5 +17,6 @@
 
     def respond(self, text):
         """Respond to this message using the connector it was created by."""
-        self.text = text
-        self.connector.respond(self)
+        response = copy(self)
+        response.text = text
+        self.connector.respond(response)

{"golden_diff": "diff --git a/opsdroid/message.py b/opsdroid/message.py\n--- a/opsdroid/message.py\n+++ b/opsdroid/message.py\n@@ -1,5 +1,7 @@\n \"\"\"Class to encapsulate a message.\"\"\"\n \n+from copy import copy\n+\n \n class Message:\n     # pylint: disable=too-few-public-methods\n@@ -15,5 +17,6 @@\n \n     def respond(self, text):\n         \"\"\"Respond to this message using the connector it was created by.\"\"\"\n-        self.text = text\n-        self.connector.respond(self)\n+        response = copy(self)\n+        response.text = text\n+        self.connector.respond(response)\n", "issue": "Copy message on respond\nWhen a message responds it updates it's `text` value and passes itself to the connector.  Due to pointers in Python the next rule to parse the message goes on to parse the response text.\n\nThe message respond method should create a shallow copy of itself to pass to the connector, instead of updating itself directly.\n\n", "before_files": [{"content": "\"\"\"Class to encapsulate a message.\"\"\"\n\n\nclass Message:\n    # pylint: disable=too-few-public-methods\n    \"\"\"A message object.\"\"\"\n\n    def __init__(self, text, user, room, connector):\n        \"\"\"Create object with minimum properties.\"\"\"\n        self.text = text\n        self.user = user\n        self.room = room\n        self.connector = connector\n        self.regex = None\n\n    def respond(self, text):\n        \"\"\"Respond to this message using the connector it was created by.\"\"\"\n        self.text = text\n        self.connector.respond(self)\n", "path": "opsdroid/message.py"}], "after_files": [{"content": "\"\"\"Class to encapsulate a message.\"\"\"\n\nfrom copy import copy\n\n\nclass Message:\n    # pylint: disable=too-few-public-methods\n    \"\"\"A message object.\"\"\"\n\n    def __init__(self, text, user, room, connector):\n        \"\"\"Create object with minimum properties.\"\"\"\n        self.text = text\n        self.user = user\n        self.room = room\n        self.connector = connector\n        self.regex = None\n\n    def respond(self, text):\n        \"\"\"Respond to this message using the connector it was created by.\"\"\"\n        response = copy(self)\n        response.text = text\n        self.connector.respond(response)\n", "path": "opsdroid/message.py"}]}