mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-10-31 07:57:38 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| ======================
 | |
| String-based Debugging
 | |
| ======================
 | |
| 
 | |
| Debugging is *really* important. Telegram's API is really big and there
 | |
| are a lot of things that you should know. Such as, what attributes or fields
 | |
| does a result have? Well, the easiest thing to do is printing it:
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     entity = await client.get_entity('username')
 | |
|     print(entity)
 | |
| 
 | |
| That will show a huge **string** similar to the following:
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     Channel(id=1066197625, title='Telegram Usernames', photo=ChatPhotoEmpty(), date=datetime.datetime(2016, 12, 16, 15, 15, 43, tzinfo=datetime.timezone.utc), version=0, creator=False, left=True, broadcast=True, verified=True, megagroup=False, restricted=False, signatures=False, min=False, scam=False, has_link=False, has_geo=False, slowmode_enabled=False, access_hash=-6309373984955162244, username='username', restriction_reason=[], admin_rights=None, banned_rights=None, default_banned_rights=None, participants_count=None)
 | |
| 
 | |
| That's a lot of text. But as you can see, all the properties are there.
 | |
| So if you want the title you **don't use regex** or anything like
 | |
| splitting ``str(entity)`` to get what you want. You just access the
 | |
| attribute you need:
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     title = entity.title
 | |
| 
 | |
| Can we get better than the shown string, though? Yes!
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     print(entity.stringify())
 | |
| 
 | |
| Will show a much better representation:
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     Channel(
 | |
|         id=1066197625,
 | |
|         title='Telegram Usernames',
 | |
|         photo=ChatPhotoEmpty(
 | |
|         ),
 | |
|         date=datetime.datetime(2016, 12, 16, 15, 15, 43, tzinfo=datetime.timezone.utc),
 | |
|         version=0,
 | |
|         creator=False,
 | |
|         left=True,
 | |
|         broadcast=True,
 | |
|         verified=True,
 | |
|         megagroup=False,
 | |
|         restricted=False,
 | |
|         signatures=False,
 | |
|         min=False,
 | |
|         scam=False,
 | |
|         has_link=False,
 | |
|         has_geo=False,
 | |
|         slowmode_enabled=False,
 | |
|         access_hash=-6309373984955162244,
 | |
|         username='username',
 | |
|         restriction_reason=[
 | |
|         ],
 | |
|         admin_rights=None,
 | |
|         banned_rights=None,
 | |
|         default_banned_rights=None,
 | |
|         participants_count=None
 | |
|     )
 | |
| 
 | |
| 
 | |
| Now it's easy to see how we could get, for example,
 | |
| the ``year`` value. It's inside ``date``:
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     channel_year = entity.date.year
 | |
| 
 | |
| You don't need to print everything to see what all the possible values
 | |
| can be. You can just search in http://tl.telethon.dev/.
 | |
| 
 | |
| Remember that you can use Python's `isinstance
 | |
| <https://docs.python.org/3/library/functions.html#isinstance>`_
 | |
| to check the type of something. For example:
 | |
| 
 | |
| .. code-block:: python
 | |
| 
 | |
|     from telethon import types
 | |
| 
 | |
|     if isinstance(entity.photo, types.ChatPhotoEmpty):
 | |
|         print('Channel has no photo')
 |