Telethon/telethon/client/bots.py

73 lines
2.4 KiB
Python
Raw Normal View History

import typing
from .. import hints
2018-08-01 02:06:47 +03:00
from ..tl import types, functions, custom
if typing.TYPE_CHECKING:
from .telegramclient import TelegramClient
2018-08-01 02:06:47 +03:00
class BotMethods:
async def inline_query(
self: 'TelegramClient',
bot: 'hints.EntityLike',
query: str,
*,
entity: 'hints.EntityLike' = None,
offset: str = None,
geo_point: 'types.GeoPoint' = None) -> custom.InlineResults:
2018-08-01 02:06:47 +03:00
"""
Makes an inline query to the specified bot (``@vote New Poll``).
2018-08-01 02:06:47 +03:00
Arguments
2018-08-01 02:06:47 +03:00
bot (`entity`):
The bot entity to which the inline query should be made.
query (`str`):
The query that should be made to the bot.
entity (`entity`, optional):
The entity where the inline query is being made from. Certain
bots use this to display different results depending on where
it's used, such as private chats, groups or channels.
If specified, it will also be the default entity where the
message will be sent after clicked. Otherwise, the "empty
peer" will be used, which some bots may not handle correctly.
2018-08-01 02:06:47 +03:00
offset (`str`, optional):
The string offset to use for the bot.
geo_point (:tl:`GeoPoint`, optional)
The geo point location information to send to the bot
for localised results. Available under some bots.
Returns
2018-08-01 02:06:47 +03:00
A list of `custom.InlineResult
<telethon.tl.custom.inlineresult.InlineResult>`.
2019-05-09 13:24:37 +03:00
Example
2019-05-09 13:24:37 +03:00
.. code-block:: python
# Make an inline query to @like
results = await client.inline_query('like', 'Do you like Telethon?')
2019-05-09 13:24:37 +03:00
# Send the first result to some chat
message = await results[0].click('TelethonOffTopic')
2018-08-01 02:06:47 +03:00
"""
bot = await self.get_input_entity(bot)
if entity:
peer = await self.get_input_entity(entity)
else:
peer = types.InputPeerEmpty()
2018-08-01 02:06:47 +03:00
result = await self(functions.messages.GetInlineBotResultsRequest(
bot=bot,
peer=peer,
2018-08-01 02:06:47 +03:00
query=query,
offset=offset or '',
geo_point=geo_point
))
return custom.InlineResults(self, result, entity=peer if entity else None)