Very basic support for live location
This commit is contained in:
committed by
Tulir Asokan
parent
dd83d6278c
commit
feac31e841
@@ -113,9 +113,11 @@ from telethon.tl.types import (
|
|||||||
MessageMediaDocument,
|
MessageMediaDocument,
|
||||||
MessageMediaGame,
|
MessageMediaGame,
|
||||||
MessageMediaGeo,
|
MessageMediaGeo,
|
||||||
|
MessageMediaGeoLive,
|
||||||
MessageMediaPhoto,
|
MessageMediaPhoto,
|
||||||
MessageMediaPoll,
|
MessageMediaPoll,
|
||||||
MessageMediaUnsupported,
|
MessageMediaUnsupported,
|
||||||
|
MessageMediaVenue,
|
||||||
MessageReactions,
|
MessageReactions,
|
||||||
MessageUserReaction,
|
MessageUserReaction,
|
||||||
PeerChannel,
|
PeerChannel,
|
||||||
@@ -2362,9 +2364,9 @@ class Portal(DBPortal, BasePortal):
|
|||||||
res = await self._send_message(intent, caption_content, timestamp=evt.date)
|
res = await self._send_message(intent, caption_content, timestamp=evt.date)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def _handle_telegram_location(
|
def _location_message_to_content(
|
||||||
self, source: au.AbstractUser, intent: IntentAPI, evt: Message, relates_to: RelatesTo
|
self, evt: Message, relates_to: RelatesTo, note: str
|
||||||
) -> Awaitable[EventID]:
|
) -> LocationMessageEventContent:
|
||||||
long = evt.media.geo.long
|
long = evt.media.geo.long
|
||||||
lat = evt.media.geo.lat
|
lat = evt.media.geo.lat
|
||||||
long_char = "E" if long > 0 else "W"
|
long_char = "E" if long > 0 else "W"
|
||||||
@@ -2377,13 +2379,32 @@ class Portal(DBPortal, BasePortal):
|
|||||||
content = LocationMessageEventContent(
|
content = LocationMessageEventContent(
|
||||||
msgtype=MessageType.LOCATION,
|
msgtype=MessageType.LOCATION,
|
||||||
geo_uri=f"geo:{geo}",
|
geo_uri=f"geo:{geo}",
|
||||||
body=f"Location: {body}\n{url}",
|
body=f"{note} {body}\n{url}",
|
||||||
relates_to=relates_to,
|
relates_to=relates_to,
|
||||||
external_url=self._get_external_url(evt),
|
external_url=self._get_external_url(evt),
|
||||||
)
|
)
|
||||||
content["format"] = str(Format.HTML)
|
content["format"] = str(Format.HTML)
|
||||||
content["formatted_body"] = f"Location: <a href='{url}'>{body}</a>"
|
content["formatted_body"] = f"{note} <a href='{url}'>{body}</a>"
|
||||||
|
return content
|
||||||
|
|
||||||
|
def _handle_telegram_location(
|
||||||
|
self, source: au.AbstractUser, intent: IntentAPI, evt: Message, relates_to: RelatesTo
|
||||||
|
) -> Awaitable[EventID]:
|
||||||
|
content = self._location_message_to_content(evt, relates_to, "Location:")
|
||||||
|
return self._send_message(intent, content, timestamp=evt.date)
|
||||||
|
|
||||||
|
def _handle_telegram_live_location(
|
||||||
|
self, source: au.AbstractUser, intent: IntentAPI, evt: Message, relates_to: RelatesTo
|
||||||
|
) -> Awaitable[EventID]:
|
||||||
|
content = self._location_message_to_content(
|
||||||
|
evt, relates_to, "Live Location (see your Telegram client for live updates):"
|
||||||
|
)
|
||||||
|
return self._send_message(intent, content, timestamp=evt.date)
|
||||||
|
|
||||||
|
def _handle_telegram_venue(
|
||||||
|
self, source: au.AbstractUser, intent: IntentAPI, evt: Message, relates_to: RelatesTo
|
||||||
|
) -> Awaitable[EventID]:
|
||||||
|
content = self._location_message_to_content(evt, relates_to, f"{evt.media.title}:")
|
||||||
return self._send_message(intent, content, timestamp=evt.date)
|
return self._send_message(intent, content, timestamp=evt.date)
|
||||||
|
|
||||||
async def _handle_telegram_text(
|
async def _handle_telegram_text(
|
||||||
@@ -2939,6 +2960,8 @@ class Portal(DBPortal, BasePortal):
|
|||||||
MessageMediaPhoto,
|
MessageMediaPhoto,
|
||||||
MessageMediaDocument,
|
MessageMediaDocument,
|
||||||
MessageMediaGeo,
|
MessageMediaGeo,
|
||||||
|
MessageMediaGeoLive,
|
||||||
|
MessageMediaVenue,
|
||||||
MessageMediaGame,
|
MessageMediaGame,
|
||||||
MessageMediaDice,
|
MessageMediaDice,
|
||||||
MessageMediaPoll,
|
MessageMediaPoll,
|
||||||
@@ -2961,6 +2984,8 @@ class Portal(DBPortal, BasePortal):
|
|||||||
MessageMediaPhoto: self._handle_telegram_photo,
|
MessageMediaPhoto: self._handle_telegram_photo,
|
||||||
MessageMediaDocument: self._handle_telegram_document,
|
MessageMediaDocument: self._handle_telegram_document,
|
||||||
MessageMediaGeo: self._handle_telegram_location,
|
MessageMediaGeo: self._handle_telegram_location,
|
||||||
|
MessageMediaGeoLive: self._handle_telegram_live_location,
|
||||||
|
MessageMediaVenue: self._handle_telegram_venue,
|
||||||
MessageMediaPoll: self._handle_telegram_poll,
|
MessageMediaPoll: self._handle_telegram_poll,
|
||||||
MessageMediaDice: self._handle_telegram_dice,
|
MessageMediaDice: self._handle_telegram_dice,
|
||||||
MessageMediaUnsupported: self._handle_telegram_unsupported,
|
MessageMediaUnsupported: self._handle_telegram_unsupported,
|
||||||
|
|||||||
Reference in New Issue
Block a user