Let me try it out for you.
>>> import tokenizer

>>> tokenizer = mosestokenizer.MosesTokenizer(
    lang='en',
    aggressive_dash_splits=True,
    refined_punct_splits=True,
)

>>> cases = [
    '@DemoUser',
    '#helloworld',
    'This is…a test',
    'This is...a test'
    'So much fun🙂Goodnight!',
    'Hi :-p',
]

>>> for case in cases:
>>>     tokens = tokenizer.tokenize(case)
>>>     print('{} -> {} -> {}'.format(
>>>         case, tokens, tokenizer.detokenize(tokens)))
"@DemoUser -> ['@', 'DemoUser'] -> @ DemoUser"
"#helloworld -> ['#', 'helloworld'] -> # helloworld"
"This is…a test -> ['This', 'is', '…', 'a', 'test'] -> This is … a test"
"This is...a test -> ['This', 'is', '...', 'a', 'test'] -> This is... a test"
"So much fun🙂Goodnight! -> ['So', 'much', 'fun', '🙂', 'Goodnight', '!'] -> So much fun 🙂 Goodnight!"
"Hi :-p -> ['Hi', ':', '@-@', 'p'] -> Hi:-p"

Emoticon protection is probably out-of-scope of this package.
There are also better ways to account for emoticons and special patterns.
If you are looking for an out of the box solution without the need for any prior training
or fine-tuning, https://github.com/cbaziotis/ekphrasis might be something worth looking at.
The main goal of this tokenizer is to perform similar tokenization to the original moses implementation (plus some slight adjustments).
Note that you can also provide protected regex patterns.
Using,
#protected_pattern.en
:-p

You get,
>>> tokens = tokenizer.tokenize('Hi :-p')
>>> print(tokens)
["Hi", ":-p"]
>>> tokenizer.detokenize(tokens)
"Hi :-p"