From d209074e44a325795f5d78babc8728c0fd912ace Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Sun, 24 Apr 2022 11:56:07 +0200 Subject: [PATCH] Add InlineQueryResultVenue --- pyrogram/types/inline_mode/__init__.py | 4 +- .../inline_mode/inline_query_result_venue.py | 131 ++++++++++++++++++ 2 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 pyrogram/types/inline_mode/inline_query_result_venue.py diff --git a/pyrogram/types/inline_mode/__init__.py b/pyrogram/types/inline_mode/__init__.py index 0d84dcd3..8646b8e4 100644 --- a/pyrogram/types/inline_mode/__init__.py +++ b/pyrogram/types/inline_mode/__init__.py @@ -26,11 +26,13 @@ from .inline_query_result_contact import InlineQueryResultContact from .inline_query_result_document import InlineQueryResultDocument from .inline_query_result_location import InlineQueryResultLocation from .inline_query_result_photo import InlineQueryResultPhoto +from .inline_query_result_venue import InlineQueryResultVenue from .inline_query_result_video import InlineQueryResultVideo from .inline_query_result_voice import InlineQueryResultVoice __all__ = [ "InlineQuery", "InlineQueryResult", "InlineQueryResultArticle", "InlineQueryResultPhoto", "InlineQueryResultAnimation", "InlineQueryResultAudio", "InlineQueryResultVideo", "ChosenInlineResult", - "InlineQueryResultContact", "InlineQueryResultDocument", "InlineQueryResultVoice", "InlineQueryResultLocation" + "InlineQueryResultContact", "InlineQueryResultDocument", "InlineQueryResultVoice", "InlineQueryResultLocation", + "InlineQueryResultVenue" ] diff --git a/pyrogram/types/inline_mode/inline_query_result_venue.py b/pyrogram/types/inline_mode/inline_query_result_venue.py new file mode 100644 index 00000000..b3b513a5 --- /dev/null +++ b/pyrogram/types/inline_mode/inline_query_result_venue.py @@ -0,0 +1,131 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# +# 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 . + +import pyrogram +from pyrogram import raw, types +from .inline_query_result import InlineQueryResult + + +class InlineQueryResultVenue(InlineQueryResult): + """A venue. + + By default, the venue will be sent by the user. Alternatively, you can use *input_message_content* to send a message + with the specified content instead of the venue. + + Parameters: + title (``str``): + Title for the result. + + address (``str``): + Address of the venue. + + latitude (``float``): + Location latitude in degrees. + + longitude (``float``): + Location longitude in degrees. + + id (``str``, *optional*): + Unique identifier for this result, 1-64 bytes. + Defaults to a randomly generated UUID4. + + foursquare_id (``str``, *optional*): + Foursquare identifier of the venue if known. + + foursquare_type (``str``, *optional*): + Foursquare type of the venue, if known. + + google_place_id (``str``, *optional*): + Google Places identifier of the venue. + + google_place_type (``str``, *optional*): + Google Places type of the venue. + + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*): + Inline keyboard attached to the message. + + input_message_content (:obj:`~pyrogram.types.InputMessageContent`): + Content of the message to be sent instead of the file. + + thumb_url (``str``, *optional*): + Url of the thumbnail for the result. + + thumb_width (``int``, *optional*): + Thumbnail width. + + thumb_height (``int``, *optional*): + Thumbnail height. + """ + + def __init__( + self, + title: str, + address: str, + latitude: float, + longitude: float, + id: str = None, + foursquare_id: str = None, + foursquare_type: str = None, + google_place_id: str = None, + google_place_type: str = None, + reply_markup: "types.InlineKeyboardMarkup" = None, + input_message_content: "types.InputMessageContent" = None, + thumb_url: str = None, + thumb_width: int = 0, + thumb_height: int = 0 + ): + super().__init__("venue", id, input_message_content, reply_markup) + + self.title = title + self.address = address + self.latitude = latitude + self.longitude = longitude + self.foursquare_id = foursquare_id + self.foursquare_type = foursquare_type + self.google_place_id = google_place_id + self.google_place_type = google_place_type + self.thumb_url = thumb_url + self.thumb_width = thumb_width + self.thumb_height = thumb_height + + async def write(self, client: "pyrogram.Client"): + return raw.types.InputBotInlineResult( + id=self.id, + type=self.type, + title=self.title, + send_message=( + await self.input_message_content.write(client, self.reply_markup) + if self.input_message_content + else raw.types.InputBotInlineMessageMediaVenue( + geo_point=raw.types.InputGeoPoint( + lat=self.latitude, + long=self.longitude + ), + title=self.title, + address=self.address, + provider=( + "foursquare" if self.foursquare_id or self.foursquare_type + else "google" if self.google_place_id or self.google_place_type + else "" + ), + venue_id=self.foursquare_id or self.google_place_id or "", + venue_type=self.foursquare_type or self.google_place_type or "", + reply_markup=await self.reply_markup.write(client) if self.reply_markup else None + ) + ) + )