prompt: 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()
  
  ```
  
golden_diff: 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)
  
verification_info: {"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"}]}