You might find this page on the way the Twitter API handles character counting with UTF-8 characters useful in explaining why some UTF-8 characters will work at the end of a tweet and others won't:
https://dev.twitter.com/docs/counting-characters
As for your actual question, insert the following client_args definition into your code:
from twython import Twython
APP_KEY = "key"
APP_SECRET = "key-secret"
OAUTH_TOKEN = "token"
OAUTH_TOKEN_SECRET = "secret"
client_args = {
"headers": {
"accept-charset": "utf-8"
}
}
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
That should tell the Twitter API to accept the UTF-8 characters from your application. Then you just need to make sure that your script/code and all interfaces for it also accept UTF-8. Then all you need to do is create the character(s) you're after when typing the tweet or DM and send.
If the above client_args setting doesn't do it in conjunction with specifying your character set in shells and other programs, it might require playing around tith the specific headers being transmitted. You may, for example, find that "content-type" is a better header to set or need to include it (although it shouldn't be).
Most of my tweets are sent through Emacs (either Twittering Mode or a shell calling a Twython script within an Emacs buffer) and there is no trouble sending a whole range of UTF-8 characters, up to Unicode 5.1 or 5.2, I think.
I haven't actually needed to set the custom headers with my scripts, but that's because UTF-8 is my default character set for all of the following: Emacs, bash (shells), Firefox, Thunderbird, GPG (the last doesn't affect Twitter, but it's always worth encouraging the use of) and finally the Twitter API itself. If I had not already set all those other things to use UTF-8 by default then I'd almost certainly run into trouble with Unicode through shell scripts and possibly elsewhere too.
Finally, if you find that most UTF-8 characters can be sent through your script, but some (usually less common or relatively new) characters cannot, then chances are the reason is due to which version of Unicode is supported by your operating system and/or available character sets (fonts). If you run into this issue, then you're going to have real trouble because even if you manage to transmit the right character to Twitter, your computer won't be able to display it. On the other hand, if you reach that point you will at least see some of your tweet and the error messages will stop.
The Python Requests documentation and the Twython documentation provide additional detail on the format for sending (POSTing) customised headers and Wikipedia includes a list of header types.
The WikiPedia list is here:
https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
Unfortunately my stack account is only recently activated, so I can't link all of the useful stuff. You may need to check the Requests documentation (find "More complicated POST requests" section) and the Twython documentation (find "Manipulate the request headers, proxies, etc." section).