From 07cb14de61e9a0cd237586a9ade57dad5726f668 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Fri, 9 Nov 2018 13:08:28 +0100 Subject: [PATCH] Add InlineQueryHandler --- pyrogram/client/dispatcher/dispatcher.py | 10 +++- pyrogram/client/handlers/__init__.py | 1 + .../client/handlers/inline_query_handler.py | 54 +++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 pyrogram/client/handlers/inline_query_handler.py diff --git a/pyrogram/client/dispatcher/dispatcher.py b/pyrogram/client/dispatcher/dispatcher.py index fa65f987..9fecab7d 100644 --- a/pyrogram/client/dispatcher/dispatcher.py +++ b/pyrogram/client/dispatcher/dispatcher.py @@ -24,7 +24,10 @@ from threading import Thread from pyrogram.api import types from ..ext import utils -from ..handlers import CallbackQueryHandler, MessageHandler, DeletedMessagesHandler, UserStatusHandler, RawUpdateHandler +from ..handlers import ( + CallbackQueryHandler, MessageHandler, DeletedMessagesHandler, + UserStatusHandler, RawUpdateHandler, InlineQueryHandler +) log = logging.getLogger(__name__) @@ -73,7 +76,10 @@ class Dispatcher: lambda upd, usr, cht: (utils.parse_callback_query(self.client, upd, usr), CallbackQueryHandler), (types.UpdateUserStatus,): - lambda upd, usr, cht: (utils.parse_user_status(upd.status, upd.user_id), UserStatusHandler) + lambda upd, usr, cht: (utils.parse_user_status(upd.status, upd.user_id), UserStatusHandler), + + (types.UpdateBotInlineQuery,): + lambda upd, usr, cht: (utils.parse_inline_query(self.client, upd, usr), InlineQueryHandler) } Dispatcher.UPDATES = {key: value for key_tuple, value in Dispatcher.UPDATES.items() for key in key_tuple} diff --git a/pyrogram/client/handlers/__init__.py b/pyrogram/client/handlers/__init__.py index ff1ead7a..7c7f7efd 100644 --- a/pyrogram/client/handlers/__init__.py +++ b/pyrogram/client/handlers/__init__.py @@ -19,6 +19,7 @@ from .callback_query_handler import CallbackQueryHandler from .deleted_messages_handler import DeletedMessagesHandler from .disconnect_handler import DisconnectHandler +from .inline_query_handler import InlineQueryHandler from .message_handler import MessageHandler from .raw_update_handler import RawUpdateHandler from .user_status_handler import UserStatusHandler diff --git a/pyrogram/client/handlers/inline_query_handler.py b/pyrogram/client/handlers/inline_query_handler.py new file mode 100644 index 00000000..e59514c0 --- /dev/null +++ b/pyrogram/client/handlers/inline_query_handler.py @@ -0,0 +1,54 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-2018 Dan Tès +# +# This file is part of Pyrogram. +# +# 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. +# +# 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. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrogram. If not, see . + +from .handler import Handler + + +class InlineQueryHandler(Handler): + """The InlineQuery handler class. Used to handle inline queries. + It is intended to be used with :meth:`add_handler() ` + + For a nicer way to register this handler, have a look at the + :meth:`on_inline_query() ` decorator. + + Args: + callback (``callable``): + Pass a function that will be called when a new InlineQuery arrives. It takes *(client, inline_query)* + as positional arguments (look at the section below for a detailed description). + + filters (:obj:`Filters `): + Pass one or more filters to allow only a subset of inline queries to be passed + in your callback function. + + Other parameters: + client (:obj:`Client `): + The Client itself, useful when you want to call other API methods inside the inline query handler. + + inline_query (:obj:`InlineQuery `): + The received inline query. + """ + + def __init__(self, callback: callable, filters=None): + super().__init__(callback, filters) + + def check(self, callback_query): + return ( + self.filters(callback_query) + if callable(self.filters) + else True + )