2020-03-21 14:43:32 +00:00
|
|
|
|
# Pyrogram - Telegram MTProto API Client Library for Python
|
|
|
|
|
# Copyright (C) 2017-2020 Dan <https://github.com/delivrance>
|
2018-10-15 12:29:58 +00:00
|
|
|
|
#
|
2020-03-21 14:43:32 +00:00
|
|
|
|
# This file is part of Pyrogram.
|
2018-10-15 12:29:58 +00:00
|
|
|
|
#
|
2020-03-21 14:43:32 +00:00
|
|
|
|
# Pyrogram is free software: you can redistribute it and/or modify
|
|
|
|
|
# it under the terms of the GNU Lesser General Public License as published
|
|
|
|
|
# by the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
# (at your option) any later version.
|
2018-10-15 12:29:58 +00:00
|
|
|
|
#
|
2020-03-21 14:43:32 +00:00
|
|
|
|
# Pyrogram 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 General Public License for more details.
|
2018-10-15 12:29:58 +00:00
|
|
|
|
#
|
2020-03-21 14:43:32 +00:00
|
|
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
|
|
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
2018-10-15 12:29:58 +00:00
|
|
|
|
|
2019-03-22 10:35:35 +00:00
|
|
|
|
from typing import List
|
|
|
|
|
|
2018-10-15 12:29:58 +00:00
|
|
|
|
from pyrogram.api import functions, types
|
|
|
|
|
from pyrogram.client.ext import BaseClient
|
2019-03-22 10:35:35 +00:00
|
|
|
|
from ...types.inline_mode import InlineQueryResult
|
2018-10-15 12:29:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnswerInlineQuery(BaseClient):
|
2019-03-21 17:37:00 +00:00
|
|
|
|
def answer_inline_query(
|
|
|
|
|
self,
|
|
|
|
|
inline_query_id: str,
|
2019-03-22 10:35:35 +00:00
|
|
|
|
results: List[InlineQueryResult],
|
2019-03-21 17:37:00 +00:00
|
|
|
|
cache_time: int = 300,
|
2019-07-21 21:10:23 +00:00
|
|
|
|
is_gallery: bool = False,
|
|
|
|
|
is_personal: bool = False,
|
2019-03-21 17:37:00 +00:00
|
|
|
|
next_offset: str = "",
|
|
|
|
|
switch_pm_text: str = "",
|
|
|
|
|
switch_pm_parameter: str = ""
|
|
|
|
|
):
|
2019-05-12 17:49:06 +00:00
|
|
|
|
"""Send answers to an inline query.
|
2019-07-21 21:10:23 +00:00
|
|
|
|
|
|
|
|
|
A maximum of 50 results per query is allowed.
|
2019-03-22 10:35:35 +00:00
|
|
|
|
|
2019-05-09 02:28:46 +00:00
|
|
|
|
Parameters:
|
2019-03-22 10:35:35 +00:00
|
|
|
|
inline_query_id (``str``):
|
|
|
|
|
Unique identifier for the answered query.
|
|
|
|
|
|
2019-07-21 21:10:23 +00:00
|
|
|
|
results (List of :obj:`InlineQueryResult`):
|
2019-03-22 10:35:35 +00:00
|
|
|
|
A list of results for the inline query.
|
|
|
|
|
|
|
|
|
|
cache_time (``int``, *optional*):
|
|
|
|
|
The maximum amount of time in seconds that the result of the inline query may be cached on the server.
|
|
|
|
|
Defaults to 300.
|
|
|
|
|
|
2019-07-21 21:10:23 +00:00
|
|
|
|
is_gallery (``bool``, *optional*):
|
|
|
|
|
Pass True, if results should be displayed in gallery mode instead of list mode.
|
|
|
|
|
Defaults to False.
|
|
|
|
|
|
2019-03-22 10:35:35 +00:00
|
|
|
|
is_personal (``bool``, *optional*):
|
|
|
|
|
Pass True, if results may be cached on the server side only for the user that sent the query.
|
2019-07-21 21:10:23 +00:00
|
|
|
|
By default (False), results may be returned to any user who sends the same query.
|
2019-03-22 10:35:35 +00:00
|
|
|
|
|
|
|
|
|
next_offset (``str``, *optional*):
|
|
|
|
|
Pass the offset that a client should send in the next query with the same text to receive more results.
|
|
|
|
|
Pass an empty string if there are no more results or if you don‘t support pagination.
|
|
|
|
|
Offset length can’t exceed 64 bytes.
|
|
|
|
|
|
|
|
|
|
switch_pm_text (``str``, *optional*):
|
|
|
|
|
If passed, clients will display a button with specified text that switches the user to a private chat
|
|
|
|
|
with the bot and sends the bot a start message with the parameter switch_pm_parameter
|
|
|
|
|
|
|
|
|
|
switch_pm_parameter (``str``, *optional*):
|
|
|
|
|
`Deep-linking <https://core.telegram.org/bots#deep-linking>`_ parameter for the /start message sent to
|
|
|
|
|
the bot when user presses the switch button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.
|
|
|
|
|
|
|
|
|
|
Example: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube
|
|
|
|
|
account to adapt search results accordingly. To do this, it displays a "Connect your YouTube account"
|
|
|
|
|
button above the results, or even before showing any. The user presses the button, switches to a private
|
|
|
|
|
chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an oauth
|
|
|
|
|
link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat
|
|
|
|
|
where they wanted to use the bot's inline capabilities.
|
|
|
|
|
|
|
|
|
|
Returns:
|
2019-05-17 11:44:44 +00:00
|
|
|
|
``bool``: True, on success.
|
2019-05-09 02:28:46 +00:00
|
|
|
|
|
2019-07-25 09:22:14 +00:00
|
|
|
|
Example:
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
from pyrogram import InlineQueryResultArticle, InputTextMessageContent
|
|
|
|
|
|
|
|
|
|
app.answer_inline_query(
|
|
|
|
|
inline_query_id,
|
|
|
|
|
results=[
|
|
|
|
|
InlineQueryResultArticle(
|
|
|
|
|
"Title",
|
|
|
|
|
InputTextMessageContent("Message content"))])
|
2019-03-22 10:35:35 +00:00
|
|
|
|
"""
|
2018-10-15 12:29:58 +00:00
|
|
|
|
return self.send(
|
|
|
|
|
functions.messages.SetInlineBotResults(
|
|
|
|
|
query_id=int(inline_query_id),
|
|
|
|
|
results=[r.write() for r in results],
|
|
|
|
|
cache_time=cache_time,
|
2019-07-21 21:10:23 +00:00
|
|
|
|
gallery=is_gallery or None,
|
2018-10-15 12:29:58 +00:00
|
|
|
|
private=is_personal or None,
|
|
|
|
|
next_offset=next_offset or None,
|
|
|
|
|
switch_pm=types.InlineBotSwitchPM(
|
2019-03-21 17:37:00 +00:00
|
|
|
|
text=switch_pm_text,
|
|
|
|
|
start_param=switch_pm_parameter
|
2018-10-15 12:29:58 +00:00
|
|
|
|
) if switch_pm_text else None
|
|
|
|
|
)
|
|
|
|
|
)
|