input: Write a function to read in a tweet and remove all punctuation, special characters and stopwords. The function should return the cleaned tweet as a list of filtered tokens. 
  
  import re
  import string
  from nltk.corpus import stopwords
  
  def clean_tweet(tweet: str) -> list:
      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
  
  assert clean_tweet("I'm so excited to be going to the #MuseumTour! #BigDay #travel") == ['excited', 'going', 'MuseumTour', 'BigDay', 'travel']
  assert clean_tweet("This is a test tweet @user #hashtag") == ['test', 'tweet', 'user', 'hashtag']
  assert clean_tweet("") == []
  assert clean_tweet("Hello, world!") == ['Hello', 'world']
  
output: def clean_tweet(tweet: str) -> list:
      tweet_clean = re.sub(r'[^\w\s]', '', tweet)
      tokens = tweet_clean.split()
      stop_words = set(stopwords.words("english"))
      filtered_tokens = [w for w in tokens if not w in stop_words]
      return filtered_tokens