input: from typing import List, Optional
  
  def clean_tweet(tweet: str) -> Optional[List[str]]:
      """Cleans a given tweet by removing all punctuation, special characters, and stopwords.
      Returns a list of filtered tokens if successful, otherwise None.
      >>> clean_tweet("I'm so excited to be going to the #MuseumTour! #BigDay #travel")
      ['excited', 'going', 'MuseumTour', 'BigDay', 'travel']
      >>> clean_tweet("This is a test tweet with many punc'tuation marks!!!!!")
      ['test', 'tweet', 'many', 'punc', 'tuation', 'marks']
      """
      import re
      import string
      from nltk.corpus import stopwords
      
      try:
          tweet_clean = re.sub(r'[^\w\s]','',tweet) #remove punctuation
          tokens = tweet_clean.split() #split string into individual words 
          stop_words = set(stopwords.words("english")) #get list of stopwords
          filtered_tokens = [w for w in tokens if not w in stop_words] #remove stopwords
          return filtered_tokens
      except Exception as e:
          print(f"An error occurred: {e}")
          return None
output:     import re
      import string
      from nltk.corpus import stopwords
      
      try:
          tweet_clean = re.sub(r'[^\w\s]','',tweet) #remove punctuation
          tokens = tweet_clean.split() #split string into individual words 
          stop_words = set(stopwords.words("english")) #get list of stopwords
          filtered_tokens = [w for w in tokens if not w in stop_words] #remove stopwords
          return filtered_tokens
      except Exception as e:
          print(f"An error occurred: {e}")
          return None