Вопрос: Во время произношения ассистент говорит "текст"None, как можно исправить?

Лучший ответ:
Что за ерунда у тебя в коде творится? Поучи азы Питона сначала, потом уже бросайся помощников писать...

say_message("Здравствуйте, хозяин!" and "Рад снова вас видеть!")
Как по твоему, что вот этот and должен значить? На самом деле, у тебя ВСЕГДА будет произноситься только второе выражение. and - это логический оператор в первую очередь. Его поведение для не-логических значений весьма специфическое.

say_message("Как пожелаете"+str(right_mouse_control()))
Оставляя за кадром вопрос "зачем", что возвращает функция right_mouse_control()? Она должна возвращать какой-то текст для произношения? Если должна, она явно этого не делает. Если не должна, то зачем ты засовываешь её возвращаемое значение в строку? Почему просто её не вызвать, вне рамок say_message()?
То же самое для остальных вариантов ниже.

Ну и простыня elif как вишенка на торте, да.

EDIT: покажу, как можно это улучшить. Код сложный, но зато легко расширяется.
Сделаем класс, который будет рулить списком известных команд и сопоставленными им фразами.
Чтобы не пришлось повторяться, сделаем так, чтобы для добавления новой команды достаточно было
написать функцию и задекорировать её. Пример будет ниже.
class VoiceCommandList: #класс управляет списком голосовых команд
  def __init__(self):
    self.actions = list() #список известных классу команд
  
  def on(self, condition): #декоратор, подписывает функцию на голосовую команду
    if isinstance(condition, str):
      condition = condition.lower()
      predicate = lambda text: condition in text #если условие - строка, она должна входить в текст
    elif callable(condition):
      predicate = condition #если условие - функция, она должна вернуть истину для текста
    else: #ни то ни другое - ошибка
      raise TypeError('Condition must be either string or function!')
    #эта функция - декоратор, она будет помечать функции-команды.
    #она описана именно внутри метода on()!
    def decorator(command_func):
      self.actions.append( (predicate, command_func) )
      return command_func
    return decorator
  
  def run_command(self, text): #функция получает строку, определяет и вызывает соотв. её команду
    text = text.lower()
    for predicate, command in self.actions:
      if predicate(text): #текст соответствует известной команде
        try:
          response = command(text) #пытаемся выполнить команду
          if response is None: #если команда не сообщила нам, что ответить
            response = "Команда выполнена" 
        except Exception as err: #не получилось
          response = "Ошибка при выполнении команды"
          print(err)
        if response: #если есть какой-то ответ
          say_message(response) #то произносим его
        break #выполняем не более одной команды за раз
    else: #этот else относится к for, не к if! Если не нашли ни одной похожей команды
      say_message("Неизвестная команда")
А теперь примеры использования класса. Мы можем добавлять команды, описав функции. Нет нужды править длинную простыню if-elif-else
vcl = VoiceCommandList() #экземпляр списка команд

#опишем реакцию на простую строку типа "привет".
@vcl.on('привет') #если передаём в декоратор строку - это означает, что строка должна содержаться в тексте
def hello(text): #функция-команда принимает аргумент - сказанный пользователем текст
  return "Доброе время суток" #она должна вернуть текст, который скажет бот

@vcl.on('открой оперу')
def start_opera(text):
  operaopen() #выполняем действие
  return "Браузер запущен" #возвращаем текст ответа

@vcl.on('напиши')
def write_message(text):
  print(text)
  #если ничего не вернём, будет отклик по умолчанию

@vcl.on(lambda text: ('влево' in text) and ('вправо' in text)) #можно делать сложные условия!
def what(text):
  return "Так влево или вправо?"
Ну а чтобы скормить боту распознанную строку:
vcl.run_command('привет') #сюда можно подставить выхлоп распознавателя речи

Худший ответ:
Более неграмотный код я видел только в начале своего обучения Python.
Зачем and в начале кода? Напиши просто
if "привет" in message :
        say_message("Здравствуйте, хозяин! Рад снова вас видеть!")

Спрашиваешь почему возвращает None, и при этом где целый код? Что означает operaclose(). Что это за переменная и зачем она нужна в ответе?

Просто сделай проверку if-elif или if-else: Если действие выполнено, пиши что "Как пожелаете, мистер.". Если есть ошибка, то пиши "Действие не может быть исполнено, мистер".

Такую блевотину я давно не видел.