python-telegram-bot/telegram/messageentity.py
Bibo-Joshi a0720b9ac6
Documentation Improvements (#2008)
* Minor doc updates, following official API docs

* Fix spelling in Defaults docstrings

* Clarify Changelog of v12.7 about aware dates

* Fix typo in CHANGES.rst (#2024)

* Fix PicklePersistence.flush() with only bot_data (#2017)

* Update pylint in pre-commit to fix CI (#2018)

* Add Filters.via_bot (#2009)

* feat: via_bot filter

also fixing a small mistake in the empty parameter of the user filter and improve docs slightly

* fix: forgot to set via_bot to None

* fix: redoing subclassing to copy paste solution

* Cosmetic changes

Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>

* Update CHANGES.rst

Fixed Typo

Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>

* Update downloads badge, add info on IRC Channel to Getting Help section

* Remove RegexHandler from ConversationHandlers Docs (#1973)

Replaced RegexHandler with MessageHandler, since the former is deprecated

* Fix Filters.via_bot docstrings

* Add notes on Markdown v1 being legacy mode

* Fixed typo in the Regex doc.. (#2036)

* Typo: Spelling

* Minor cleanup from #2043

* Document CommandHandler ignoring channel posts

* Doc fixes for a few telegram.ext classes

* Doc fixes for most `telegram` classes.

* pep-8

forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.

* Address review and made rendering of booleans consistent

True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.

* Few doc fixes for inline* classes

As usual, docs were cross-checked with official tg api docs.

* Doc fixes for telegram/files classes

As usual, docs were cross-checked with official tg api docs.

* Doc fixes for telegram.Game

Mostly just added hyperlinks. And fixed message length doc.

As usual, docs were cross-checked with official tg api docs.

* Very minor doc fix for passportfile.py and passportelementerrors.py

Didn't bother changing too much since this seems to be a custom implementation.

* Doc fixes for telegram.payments

As usual, cross-checked with official bot api docs.

* Address review 2

Few tiny other fixes too.

* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.

Few tiny other doc fixes too.

Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00

121 lines
4.2 KiB
Python

#!/usr/bin/env python
#
# A library that provides a Python interface to the Telegram Bot API
# Copyright (C) 2015-2020
# Leandro Toledo de Souza <devs@python-telegram-bot.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser Public License for more details.
#
# You should have received a copy of the GNU Lesser Public License
# along with this program. If not, see [http://www.gnu.org/licenses/].
"""This module contains an object that represents a Telegram MessageEntity."""
from telegram import User, TelegramObject
class MessageEntity(TelegramObject):
"""
This object represents one special entity in a text message. For example, hashtags,
usernames, URLs, etc.
Attributes:
type (:obj:`str`): Type of the entity.
offset (:obj:`int`): Offset in UTF-16 code units to the start of the entity.
length (:obj:`int`): Length of the entity in UTF-16 code units.
url (:obj:`str`): Optional. Url that will be opened after user taps on the text.
user (:class:`telegram.User`): Optional. The mentioned user.
language (:obj:`str`): Optional. Programming language of the entity text.
Args:
type (:obj:`str`): Type of the entity. Can be mention (@username), hashtag, bot_command,
url, email, phone_number, bold (bold text), italic (italic text), strikethrough,
code (monowidth string), pre (monowidth block), text_link (for clickable text URLs),
text_mention (for users without usernames).
offset (:obj:`int`): Offset in UTF-16 code units to the start of the entity.
length (:obj:`int`): Length of the entity in UTF-16 code units.
url (:obj:`str`, optional): For :attr:`TEXT_LINK` only, url that will be opened after
user taps on the text.
user (:class:`telegram.User`, optional): For :attr:`TEXT_MENTION` only, the mentioned
user.
language (:obj:`str`, optional): For :attr:`PRE` only, the programming language of
the entity text.
"""
def __init__(self, type, offset, length, url=None, user=None, language=None, **kwargs):
# Required
self.type = type
self.offset = offset
self.length = length
# Optionals
self.url = url
self.user = user
self.language = language
self._id_attrs = (self.type, self.offset, self.length)
@classmethod
def de_json(cls, data, bot):
data = super().de_json(data, bot)
if not data:
return None
data['user'] = User.de_json(data.get('user'), bot)
return cls(**data)
@classmethod
def de_list(cls, data, bot):
if not data:
return list()
entities = list()
for entity in data:
entities.append(cls.de_json(entity, bot))
return entities
MENTION = 'mention'
""":obj:`str`: 'mention'"""
HASHTAG = 'hashtag'
""":obj:`str`: 'hashtag'"""
CASHTAG = 'cashtag'
""":obj:`str`: 'cashtag'"""
PHONE_NUMBER = 'phone_number'
""":obj:`str`: 'phone_number'"""
BOT_COMMAND = 'bot_command'
""":obj:`str`: 'bot_command'"""
URL = 'url'
""":obj:`str`: 'url'"""
EMAIL = 'email'
""":obj:`str`: 'email'"""
BOLD = 'bold'
""":obj:`str`: 'bold'"""
ITALIC = 'italic'
""":obj:`str`: 'italic'"""
CODE = 'code'
""":obj:`str`: 'code'"""
PRE = 'pre'
""":obj:`str`: 'pre'"""
TEXT_LINK = 'text_link'
""":obj:`str`: 'text_link'"""
TEXT_MENTION = 'text_mention'
""":obj:`str`: 'text_mention'"""
UNDERLINE = 'underline'
""":obj:`str`: 'underline'"""
STRIKETHROUGH = 'strikethrough'
""":obj:`str`: 'strikethrough'"""
ALL_TYPES = [
MENTION, HASHTAG, CASHTAG, PHONE_NUMBER, BOT_COMMAND, URL,
EMAIL, BOLD, ITALIC, CODE, PRE, TEXT_LINK, TEXT_MENTION, UNDERLINE, STRIKETHROUGH
]
"""List[:obj:`str`]: List of all the types."""