text: # Copyright (c) Microsoft Corporation. All rights reserved.
  # Licensed under the MIT License.
  
  from botbuilder.core import ActivityHandler, ConversationState, TurnContext, UserState
  from botbuilder.dialogs import Dialog
  
  from helpers.dialog_helper import DialogHelper
  
  
  class DialogBot(ActivityHandler):
      def __init__(
          self,
          conversation_state: ConversationState,
          user_state: UserState,
          dialog: Dialog,
      ):
          self.conversation_state = conversation_state
          self.user_state = user_state
          self.dialog = dialog
  
      async def on_turn(self, turn_context: TurnContext):
          await super().on_turn(turn_context)
  
          # Save any state changes that might have occurred during the turn.
          await self.conversation_state.save_changes(turn_context)
          await self.user_state.save_changes(turn_context)
  
      async def on_message_activity(self, turn_context: TurnContext):
          # Run the Dialog with the new message Activity.
          await DialogHelper.run_dialog(
              self.dialog,
              turn_context,
              self.conversation_state.create_property("DialogState"),
          )
  