We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
User.full_name doesn't handle non-ASCII (in Python 2?)
### Steps to reproduce
```python
updater = ext.Updater(token=settings.telegram_token())
def F(bot, update):
  user = update.effective_user
  print repr(user.first_name), repr(user.last_name)
  print '%s %s' % (user.first_name, user.last_name)
  print user.full_name

updater.dispatcher.add_handler(ext.MessageHandler(0, F))
updater.start_polling()
updater.idle()
```

### Expected behaviour
```
u'Dan\u2022iel' u'Reed'
Dan•iel Reed
Dan•iel Reed
```

### Actual behaviour
```
u'Dan\u2022iel' u'Reed'
Dan•iel Reed
ERROR dispatcher.py:301] An uncaught error was raised while processing the update
Traceback (most recent call last):
  File "local/lib/python2.7/site-packages/telegram/ext/dispatcher.py", line 279, in process_update
    handler.handle_update(update, self)
  File "local/lib/python2.7/site-packages/telegram/ext/messagehandler.py", line 169, in handle_update
    return self.callback(dispatcher.bot, update, **optional_args)
  File "<stdin>", line 5, in F
  File "local/lib/python2.7/site-packages/telegram/user.py", line 91, in full_name
    return '{} {}'.format(self.first_name, self.last_name)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2022' in position 3: ordinal not in range(128)
```

### Configuration
**Operating System:**


**Version of Python, python-telegram-bot & dependencies:**

```
python-telegram-bot 10.0.1
certifi 2018.01.18
future 0.16.0
Python 2.7.14 (default, Sep 23 2017, 22:06:14)  [GCC 7.2.0]
```

I'm a little rushed, but this is works for me:

```python
    @property
    def full_name(self):
        """
        :obj:`str`: Convenience property. The user's :attr:`first_name`, followed by (if available)
            :attr:`last_name`.

        """
        if self.last_name:
!           return u'{} {}'.format(self.first_name, self.last_name)
        return self.first_name
```

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `telegram/user.py`
Content:
```
1 #!/usr/bin/env python
2 # pylint: disable=C0103,W0622
3 #
4 # A library that provides a Python interface to the Telegram Bot API
5 # Copyright (C) 2015-2018
6 # Leandro Toledo de Souza <devs@python-telegram-bot.org>
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU Lesser Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU Lesser Public License for more details.
17 #
18 # You should have received a copy of the GNU Lesser Public License
19 # along with this program.  If not, see [http://www.gnu.org/licenses/].
20 """This module contains an object that represents a Telegram User."""
21 
22 from telegram import TelegramObject
23 from telegram.utils.helpers import mention_html as util_mention_html
24 from telegram.utils.helpers import mention_markdown as util_mention_markdown
25 
26 
27 class User(TelegramObject):
28     """This object represents a Telegram user or bot.
29 
30     Attributes:
31         id (:obj:`int`): Unique identifier for this user or bot.
32         is_bot (:obj:`bool`): True, if this user is a bot
33         first_name (:obj:`str`): User's or bot's first name.
34         last_name (:obj:`str`): Optional. User's or bot's last name.
35         username (:obj:`str`): Optional. User's or bot's username.
36         language_code (:obj:`str`): Optional. IETF language tag of the user's language.
37         bot (:class:`telegram.Bot`): Optional. The Bot to use for instance methods.
38 
39     Args:
40         id (:obj:`int`): Unique identifier for this user or bot.
41         is_bot (:obj:`bool`): True, if this user is a bot
42         first_name (:obj:`str`): User's or bot's first name.
43         last_name (:obj:`str`, optional): User's or bot's last name.
44         username (:obj:`str`, optional): User's or bot's username.
45         language_code (:obj:`str`, optional): IETF language tag of the user's language.
46         bot (:class:`telegram.Bot`, optional): The Bot to use for instance methods.
47 
48     """
49 
50     def __init__(self,
51                  id,
52                  first_name,
53                  is_bot,
54                  last_name=None,
55                  username=None,
56                  language_code=None,
57                  bot=None,
58                  **kwargs):
59         # Required
60         self.id = int(id)
61         self.first_name = first_name
62         self.is_bot = is_bot
63         # Optionals
64         self.last_name = last_name
65         self.username = username
66         self.language_code = language_code
67 
68         self.bot = bot
69 
70         self._id_attrs = (self.id,)
71 
72     @property
73     def name(self):
74         """
75         :obj:`str`: Convenience property. If available, returns the user's :attr:`username`
76             prefixed with "@". If :attr:`username` is not available, returns :attr:`full_name`.
77 
78         """
79         if self.username:
80             return '@{}'.format(self.username)
81         return self.full_name
82 
83     @property
84     def full_name(self):
85         """
86         :obj:`str`: Convenience property. The user's :attr:`first_name`, followed by (if available)
87             :attr:`last_name`.
88 
89         """
90         if self.last_name:
91             return '{} {}'.format(self.first_name, self.last_name)
92         return self.first_name
93 
94     @classmethod
95     def de_json(cls, data, bot):
96         if not data:
97             return None
98 
99         data = super(User, cls).de_json(data, bot)
100 
101         return cls(bot=bot, **data)
102 
103     def get_profile_photos(self, *args, **kwargs):
104         """
105         Shortcut for::
106 
107                 bot.get_user_profile_photos(update.message.from_user.id, *args, **kwargs)
108 
109         """
110 
111         return self.bot.get_user_profile_photos(self.id, *args, **kwargs)
112 
113     @classmethod
114     def de_list(cls, data, bot):
115         if not data:
116             return []
117 
118         users = list()
119         for user in data:
120             users.append(cls.de_json(user, bot))
121 
122         return users
123 
124     def mention_markdown(self, name=None):
125         """
126         Args:
127             name (:obj:`str`): If provided, will overwrite the user's name.
128 
129         Returns:
130             :obj:`str`: The inline mention for the user as markdown.
131         """
132         if not name:
133             return util_mention_markdown(self.id, self.name)
134         else:
135             return util_mention_markdown(self.id, name)
136 
137     def mention_html(self, name=None):
138         """
139         Args:
140             name (:obj:`str`): If provided, will overwrite the user's name.
141 
142         Returns:
143             :obj:`str`: The inline mention for the user as HTML.
144         """
145         if not name:
146             return util_mention_html(self.id, self.name)
147         else:
148             return util_mention_html(self.id, name)
149 
150     def send_message(self, *args, **kwargs):
151         """Shortcut for::
152 
153             bot.send_message(User.chat_id, *args, **kwargs)
154 
155         Where User is the current instance.
156 
157         Returns:
158             :class:`telegram.Message`: On success, instance representing the message posted.
159 
160         """
161         return self.bot.send_message(self.id, *args, **kwargs)
162 
163     def send_photo(self, *args, **kwargs):
164         """Shortcut for::
165 
166             bot.send_photo(User.chat_id, *args, **kwargs)
167 
168         Where User is the current instance.
169 
170         Returns:
171             :class:`telegram.Message`: On success, instance representing the message posted.
172 
173         """
174         return self.bot.send_photo(self.id, *args, **kwargs)
175 
176     def send_audio(self, *args, **kwargs):
177         """Shortcut for::
178 
179             bot.send_audio(User.chat_id, *args, **kwargs)
180 
181         Where User is the current instance.
182 
183         Returns:
184             :class:`telegram.Message`: On success, instance representing the message posted.
185 
186         """
187         return self.bot.send_audio(self.id, *args, **kwargs)
188 
189     def send_document(self, *args, **kwargs):
190         """Shortcut for::
191 
192             bot.send_document(User.chat_id, *args, **kwargs)
193 
194         Where User is the current instance.
195 
196         Returns:
197             :class:`telegram.Message`: On success, instance representing the message posted.
198 
199         """
200         return self.bot.send_document(self.id, *args, **kwargs)
201 
202     def send_sticker(self, *args, **kwargs):
203         """Shortcut for::
204 
205             bot.send_sticker(User.chat_id, *args, **kwargs)
206 
207         Where User is the current instance.
208 
209         Returns:
210             :class:`telegram.Message`: On success, instance representing the message posted.
211 
212         """
213         return self.bot.send_sticker(self.id, *args, **kwargs)
214 
215     def send_video(self, *args, **kwargs):
216         """Shortcut for::
217 
218             bot.send_video(User.chat_id, *args, **kwargs)
219 
220         Where User is the current instance.
221 
222         Returns:
223             :class:`telegram.Message`: On success, instance representing the message posted.
224 
225         """
226         return self.bot.send_video(self.id, *args, **kwargs)
227 
228     def send_video_note(self, *args, **kwargs):
229         """Shortcut for::
230 
231             bot.send_video_note(User.chat_id, *args, **kwargs)
232 
233         Where User is the current instance.
234 
235         Returns:
236             :class:`telegram.Message`: On success, instance representing the message posted.
237 
238         """
239         return self.bot.send_video_note(self.id, *args, **kwargs)
240 
241     def send_voice(self, *args, **kwargs):
242         """Shortcut for::
243 
244             bot.send_voice(User.chat_id, *args, **kwargs)
245 
246         Where User is the current instance.
247 
248         Returns:
249             :class:`telegram.Message`: On success, instance representing the message posted.
250 
251         """
252         return self.bot.send_voice(self.id, *args, **kwargs)
253
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/telegram/user.py b/telegram/user.py
--- a/telegram/user.py
+++ b/telegram/user.py
@@ -88,7 +88,7 @@
 
         """
         if self.last_name:
-            return '{} {}'.format(self.first_name, self.last_name)
+            return u'{} {}'.format(self.first_name, self.last_name)
         return self.first_name
 
     @classmethod

{"golden_diff": "diff --git a/telegram/user.py b/telegram/user.py\n--- a/telegram/user.py\n+++ b/telegram/user.py\n@@ -88,7 +88,7 @@\n \n         \"\"\"\n         if self.last_name:\n-            return '{} {}'.format(self.first_name, self.last_name)\n+            return u'{} {}'.format(self.first_name, self.last_name)\n         return self.first_name\n \n     @classmethod\n", "issue": "User.full_name doesn't handle non-ASCII (in Python 2?)\n### Steps to reproduce\r\n```python\r\nupdater = ext.Updater(token=settings.telegram_token())\r\ndef F(bot, update):\r\n  user = update.effective_user\r\n  print repr(user.first_name), repr(user.last_name)\r\n  print '%s %s' % (user.first_name, user.last_name)\r\n  print user.full_name\r\n\r\nupdater.dispatcher.add_handler(ext.MessageHandler(0, F))\r\nupdater.start_polling()\r\nupdater.idle()\r\n```\r\n\r\n### Expected behaviour\r\n```\r\nu'Dan\\u2022iel' u'Reed'\r\nDan\u2022iel Reed\r\nDan\u2022iel Reed\r\n```\r\n\r\n### Actual behaviour\r\n```\r\nu'Dan\\u2022iel' u'Reed'\r\nDan\u2022iel Reed\r\nERROR dispatcher.py:301] An uncaught error was raised while processing the update\r\nTraceback (most recent call last):\r\n  File \"local/lib/python2.7/site-packages/telegram/ext/dispatcher.py\", line 279, in process_update\r\n    handler.handle_update(update, self)\r\n  File \"local/lib/python2.7/site-packages/telegram/ext/messagehandler.py\", line 169, in handle_update\r\n    return self.callback(dispatcher.bot, update, **optional_args)\r\n  File \"<stdin>\", line 5, in F\r\n  File \"local/lib/python2.7/site-packages/telegram/user.py\", line 91, in full_name\r\n    return '{} {}'.format(self.first_name, self.last_name)\r\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\u2022' in position 3: ordinal not in range(128)\r\n```\r\n\r\n### Configuration\r\n**Operating System:**\r\n\r\n\r\n**Version of Python, python-telegram-bot & dependencies:**\r\n\r\n```\r\npython-telegram-bot 10.0.1\r\ncertifi 2018.01.18\r\nfuture 0.16.0\r\nPython 2.7.14 (default, Sep 23 2017, 22:06:14)  [GCC 7.2.0]\r\n```\r\n\r\nI'm a little rushed, but this is works for me:\r\n\r\n```python\r\n    @property\r\n    def full_name(self):\r\n        \"\"\"\r\n        :obj:`str`: Convenience property. The user's :attr:`first_name`, followed by (if available)\r\n            :attr:`last_name`.\r\n\r\n        \"\"\"\r\n        if self.last_name:\r\n!           return u'{} {}'.format(self.first_name, self.last_name)\r\n        return self.first_name\r\n```\n", "before_files": [{"content": "#!/usr/bin/env python\n# pylint: disable=C0103,W0622\n#\n# A library that provides a Python interface to the Telegram Bot API\n# Copyright (C) 2015-2018\n# Leandro Toledo de Souza <devs@python-telegram-bot.org>\n#\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Lesser Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Lesser Public License for more details.\n#\n# You should have received a copy of the GNU Lesser Public License\n# along with this program.  If not, see [http://www.gnu.org/licenses/].\n\"\"\"This module contains an object that represents a Telegram User.\"\"\"\n\nfrom telegram import TelegramObject\nfrom telegram.utils.helpers import mention_html as util_mention_html\nfrom telegram.utils.helpers import mention_markdown as util_mention_markdown\n\n\nclass User(TelegramObject):\n    \"\"\"This object represents a Telegram user or bot.\n\n    Attributes:\n        id (:obj:`int`): Unique identifier for this user or bot.\n        is_bot (:obj:`bool`): True, if this user is a bot\n        first_name (:obj:`str`): User's or bot's first name.\n        last_name (:obj:`str`): Optional. User's or bot's last name.\n        username (:obj:`str`): Optional. User's or bot's username.\n        language_code (:obj:`str`): Optional. IETF language tag of the user's language.\n        bot (:class:`telegram.Bot`): Optional. The Bot to use for instance methods.\n\n    Args:\n        id (:obj:`int`): Unique identifier for this user or bot.\n        is_bot (:obj:`bool`): True, if this user is a bot\n        first_name (:obj:`str`): User's or bot's first name.\n        last_name (:obj:`str`, optional): User's or bot's last name.\n        username (:obj:`str`, optional): User's or bot's username.\n        language_code (:obj:`str`, optional): IETF language tag of the user's language.\n        bot (:class:`telegram.Bot`, optional): The Bot to use for instance methods.\n\n    \"\"\"\n\n    def __init__(self,\n                 id,\n                 first_name,\n                 is_bot,\n                 last_name=None,\n                 username=None,\n                 language_code=None,\n                 bot=None,\n                 **kwargs):\n        # Required\n        self.id = int(id)\n        self.first_name = first_name\n        self.is_bot = is_bot\n        # Optionals\n        self.last_name = last_name\n        self.username = username\n        self.language_code = language_code\n\n        self.bot = bot\n\n        self._id_attrs = (self.id,)\n\n    @property\n    def name(self):\n        \"\"\"\n        :obj:`str`: Convenience property. If available, returns the user's :attr:`username`\n            prefixed with \"@\". If :attr:`username` is not available, returns :attr:`full_name`.\n\n        \"\"\"\n        if self.username:\n            return '@{}'.format(self.username)\n        return self.full_name\n\n    @property\n    def full_name(self):\n        \"\"\"\n        :obj:`str`: Convenience property. The user's :attr:`first_name`, followed by (if available)\n            :attr:`last_name`.\n\n        \"\"\"\n        if self.last_name:\n            return '{} {}'.format(self.first_name, self.last_name)\n        return self.first_name\n\n    @classmethod\n    def de_json(cls, data, bot):\n        if not data:\n            return None\n\n        data = super(User, cls).de_json(data, bot)\n\n        return cls(bot=bot, **data)\n\n    def get_profile_photos(self, *args, **kwargs):\n        \"\"\"\n        Shortcut for::\n\n                bot.get_user_profile_photos(update.message.from_user.id, *args, **kwargs)\n\n        \"\"\"\n\n        return self.bot.get_user_profile_photos(self.id, *args, **kwargs)\n\n    @classmethod\n    def de_list(cls, data, bot):\n        if not data:\n            return []\n\n        users = list()\n        for user in data:\n            users.append(cls.de_json(user, bot))\n\n        return users\n\n    def mention_markdown(self, name=None):\n        \"\"\"\n        Args:\n            name (:obj:`str`): If provided, will overwrite the user's name.\n\n        Returns:\n            :obj:`str`: The inline mention for the user as markdown.\n        \"\"\"\n        if not name:\n            return util_mention_markdown(self.id, self.name)\n        else:\n            return util_mention_markdown(self.id, name)\n\n    def mention_html(self, name=None):\n        \"\"\"\n        Args:\n            name (:obj:`str`): If provided, will overwrite the user's name.\n\n        Returns:\n            :obj:`str`: The inline mention for the user as HTML.\n        \"\"\"\n        if not name:\n            return util_mention_html(self.id, self.name)\n        else:\n            return util_mention_html(self.id, name)\n\n    def send_message(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_message(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_message(self.id, *args, **kwargs)\n\n    def send_photo(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_photo(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_photo(self.id, *args, **kwargs)\n\n    def send_audio(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_audio(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_audio(self.id, *args, **kwargs)\n\n    def send_document(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_document(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_document(self.id, *args, **kwargs)\n\n    def send_sticker(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_sticker(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_sticker(self.id, *args, **kwargs)\n\n    def send_video(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_video(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_video(self.id, *args, **kwargs)\n\n    def send_video_note(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_video_note(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_video_note(self.id, *args, **kwargs)\n\n    def send_voice(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_voice(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_voice(self.id, *args, **kwargs)\n", "path": "telegram/user.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# pylint: disable=C0103,W0622\n#\n# A library that provides a Python interface to the Telegram Bot API\n# Copyright (C) 2015-2018\n# Leandro Toledo de Souza <devs@python-telegram-bot.org>\n#\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Lesser Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Lesser Public License for more details.\n#\n# You should have received a copy of the GNU Lesser Public License\n# along with this program.  If not, see [http://www.gnu.org/licenses/].\n\"\"\"This module contains an object that represents a Telegram User.\"\"\"\n\nfrom telegram import TelegramObject\nfrom telegram.utils.helpers import mention_html as util_mention_html\nfrom telegram.utils.helpers import mention_markdown as util_mention_markdown\n\n\nclass User(TelegramObject):\n    \"\"\"This object represents a Telegram user or bot.\n\n    Attributes:\n        id (:obj:`int`): Unique identifier for this user or bot.\n        is_bot (:obj:`bool`): True, if this user is a bot\n        first_name (:obj:`str`): User's or bot's first name.\n        last_name (:obj:`str`): Optional. User's or bot's last name.\n        username (:obj:`str`): Optional. User's or bot's username.\n        language_code (:obj:`str`): Optional. IETF language tag of the user's language.\n        bot (:class:`telegram.Bot`): Optional. The Bot to use for instance methods.\n\n    Args:\n        id (:obj:`int`): Unique identifier for this user or bot.\n        is_bot (:obj:`bool`): True, if this user is a bot\n        first_name (:obj:`str`): User's or bot's first name.\n        last_name (:obj:`str`, optional): User's or bot's last name.\n        username (:obj:`str`, optional): User's or bot's username.\n        language_code (:obj:`str`, optional): IETF language tag of the user's language.\n        bot (:class:`telegram.Bot`, optional): The Bot to use for instance methods.\n\n    \"\"\"\n\n    def __init__(self,\n                 id,\n                 first_name,\n                 is_bot,\n                 last_name=None,\n                 username=None,\n                 language_code=None,\n                 bot=None,\n                 **kwargs):\n        # Required\n        self.id = int(id)\n        self.first_name = first_name\n        self.is_bot = is_bot\n        # Optionals\n        self.last_name = last_name\n        self.username = username\n        self.language_code = language_code\n\n        self.bot = bot\n\n        self._id_attrs = (self.id,)\n\n    @property\n    def name(self):\n        \"\"\"\n        :obj:`str`: Convenience property. If available, returns the user's :attr:`username`\n            prefixed with \"@\". If :attr:`username` is not available, returns :attr:`full_name`.\n\n        \"\"\"\n        if self.username:\n            return '@{}'.format(self.username)\n        return self.full_name\n\n    @property\n    def full_name(self):\n        \"\"\"\n        :obj:`str`: Convenience property. The user's :attr:`first_name`, followed by (if available)\n            :attr:`last_name`.\n\n        \"\"\"\n        if self.last_name:\n            return u'{} {}'.format(self.first_name, self.last_name)\n        return self.first_name\n\n    @classmethod\n    def de_json(cls, data, bot):\n        if not data:\n            return None\n\n        data = super(User, cls).de_json(data, bot)\n\n        return cls(bot=bot, **data)\n\n    def get_profile_photos(self, *args, **kwargs):\n        \"\"\"\n        Shortcut for::\n\n                bot.get_user_profile_photos(update.message.from_user.id, *args, **kwargs)\n\n        \"\"\"\n\n        return self.bot.get_user_profile_photos(self.id, *args, **kwargs)\n\n    @classmethod\n    def de_list(cls, data, bot):\n        if not data:\n            return []\n\n        users = list()\n        for user in data:\n            users.append(cls.de_json(user, bot))\n\n        return users\n\n    def mention_markdown(self, name=None):\n        \"\"\"\n        Args:\n            name (:obj:`str`): If provided, will overwrite the user's name.\n\n        Returns:\n            :obj:`str`: The inline mention for the user as markdown.\n        \"\"\"\n        if not name:\n            return util_mention_markdown(self.id, self.name)\n        else:\n            return util_mention_markdown(self.id, name)\n\n    def mention_html(self, name=None):\n        \"\"\"\n        Args:\n            name (:obj:`str`): If provided, will overwrite the user's name.\n\n        Returns:\n            :obj:`str`: The inline mention for the user as HTML.\n        \"\"\"\n        if not name:\n            return util_mention_html(self.id, self.name)\n        else:\n            return util_mention_html(self.id, name)\n\n    def send_message(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_message(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_message(self.id, *args, **kwargs)\n\n    def send_photo(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_photo(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_photo(self.id, *args, **kwargs)\n\n    def send_audio(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_audio(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_audio(self.id, *args, **kwargs)\n\n    def send_document(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_document(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_document(self.id, *args, **kwargs)\n\n    def send_sticker(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_sticker(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_sticker(self.id, *args, **kwargs)\n\n    def send_video(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_video(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_video(self.id, *args, **kwargs)\n\n    def send_video_note(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_video_note(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_video_note(self.id, *args, **kwargs)\n\n    def send_voice(self, *args, **kwargs):\n        \"\"\"Shortcut for::\n\n            bot.send_voice(User.chat_id, *args, **kwargs)\n\n        Where User is the current instance.\n\n        Returns:\n            :class:`telegram.Message`: On success, instance representing the message posted.\n\n        \"\"\"\n        return self.bot.send_voice(self.id, *args, **kwargs)\n", "path": "telegram/user.py"}]}