Implement client.inline_query()

This commit is contained in:
Lonami Exo 2018-08-01 01:06:47 +02:00
parent 49a6cb4ef8
commit 7a2d7d98ad
6 changed files with 61 additions and 4 deletions

View File

@ -54,6 +54,14 @@ telethon\.tl\.custom\.button module
:undoc-members:
:show-inheritance:
telethon\.tl\.custom\.inlineresult module
-----------------------------------------
.. automodule:: telethon.tl.custom.inlineresult
:members:
:undoc-members:
:show-inheritance:
telethon\.tl\.custom\.chatgetter module
---------------------------------------

View File

@ -20,4 +20,5 @@ from .chats import ChatMethods
from .dialogs import DialogMethods
from .downloads import DownloadMethods
from .auth import AuthMethods
from .bots import BotMethods
from .telegramclient import TelegramClient

45
telethon/client/bots.py Normal file
View File

@ -0,0 +1,45 @@
from .users import UserMethods
from ..tl import types, functions, custom
class BotMethods(UserMethods):
async def inline_query(self, bot, query, *, offset=None, geo_point=None):
"""
Makes the given inline query to the specified bot
i.e. ``@vote My New Poll`` would be as follows:
>>> client = ...
>>> client.inline_query('vote', 'My New Poll')
Args:
bot (`entity`):
The bot entity to which the inline query should be made.
query (`str`):
The query that should be made to the bot.
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:
A list of `custom.InlineResult
<telethon.tl.custom.inlineresult.InlineResult>`.
"""
bot = await self.get_input_entity(bot)
result = await self(functions.messages.GetInlineBotResultsRequest(
bot=bot,
peer=types.InputPeerEmpty(),
query=query,
offset=offset or '',
geo_point=geo_point
))
# TODO Custom InlineResults(UserList) class with more information
return [
custom.InlineResult(self, x, query_id=result.query_id)
for x in result.results
]

View File

@ -1,12 +1,12 @@
from . import (
AuthMethods, DownloadMethods, DialogMethods, ChatMethods,
AuthMethods, DownloadMethods, DialogMethods, ChatMethods, BotMethods,
MessageMethods, ButtonMethods, UpdateMethods, UploadMethods,
MessageParseMethods, UserMethods
)
class TelegramClient(
AuthMethods, DownloadMethods, DialogMethods, ChatMethods,
AuthMethods, DownloadMethods, DialogMethods, ChatMethods, BotMethods,
MessageMethods, UploadMethods, ButtonMethods, UpdateMethods,
MessageParseMethods, UserMethods
):

View File

@ -17,7 +17,9 @@ import inspect
from async_generator import isasyncgenfunction
from .client.telegramclient import TelegramClient
from .tl.custom import Draft, Dialog, MessageButton, Forward, Message
from .tl.custom import (
Draft, Dialog, MessageButton, Forward, Message, InlineResult
)
from .tl.custom.chatgetter import ChatGetter
from .tl.custom.sendergetter import SenderGetter
@ -81,4 +83,4 @@ def syncify(*types):
syncify(TelegramClient, Draft, Dialog, MessageButton,
ChatGetter, SenderGetter, Forward, Message)
ChatGetter, SenderGetter, Forward, Message, InlineResult)

View File

@ -6,3 +6,4 @@ from .forward import Forward
from .message import Message
from .button import Button
from .inline import InlineBuilder
from .inlineresult import InlineResult