Compare commits

..
6 Commits
Author SHA1 Message Date
YoursFunny 0ffa9903c4 add hint 2024-04-26 15:19:04 +08:00
YoursFunny 248e7d48e0 fix caption of multiple inline query results 2024-04-26 15:15:13 +08:00
YoursFunny e915cd13de fix html escape 2024-04-26 15:13:38 +08:00
YoursFunny a7d144f2ee fix multiple media forward 2024-03-25 16:54:08 +08:00
YoursFunny 081ee595b1 remove edit reply 2024-03-24 22:54:23 +08:00
YoursFunny 4272454f9a fix url match 2024-03-24 22:33:36 +08:00
2 changed files with 16 additions and 13 deletions
+7 -6
View File
@@ -70,11 +70,13 @@ async def url_media(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
async def forward_message( async def forward_message(
update: Update, update: Update,
context: ContextTypes.DEFAULT_TYPE, context: ContextTypes.DEFAULT_TYPE,
message_sent: tuple[Message, ...], message_to_send: tuple[Message, ...],
) -> None: ) -> None:
try: try:
for i, m in enumerate(message_sent): await update.effective_chat.copy_messages(
await m.copy(context.user_data['forward_channel_id']) context.user_data['forward_channel_id'],
[m.id for m in message_to_send]
)
except Exception as e: except Exception as e:
await update.effective_message.reply_text(str(e)) await update.effective_message.reply_text(str(e))
@@ -85,8 +87,9 @@ async def edit_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> No
if update.message.reply_to_message != context.user_data['message_reply']: if update.message.reply_to_message != context.user_data['message_reply']:
return return
update_text = update.message.text update_text = update.message.text
match = common.message_url_regex.search(update_text).span() match = common.message_url_regex.search(update_text)
if match: if match:
match = match.span()
update_text = update_text[:match[0]] + '<a href="{0}">{1}</a>'.format( update_text = update_text[:match[0]] + '<a href="{0}">{1}</a>'.format(
context.user_data['message_url'], update_text[match[0] + 1:match[1] - 1] context.user_data['message_url'], update_text[match[0] + 1:match[1] - 1]
) + update_text[match[1]:] ) + update_text[match[1]:]
@@ -104,8 +107,6 @@ async def query_forward_message(update: Update, context: ContextTypes.DEFAULT_TY
await forward_message(update, context, message_to_send) await forward_message(update, context, message_to_send)
await update.callback_query.answer('✅ Forwarded') await update.callback_query.answer('✅ Forwarded')
await update.callback_query.edit_message_reply_markup() await update.callback_query.edit_message_reply_markup()
message_reply: Message = context.user_data['message_reply']
await message_reply.edit_text("Message forwarded.")
del context.user_data['message_reply'] del context.user_data['message_reply']
del context.user_data['message_to_send'] del context.user_data['message_to_send']
del context.user_data['message_url'] del context.user_data['message_url']
+9 -7
View File
@@ -1,3 +1,4 @@
import html
from typing import Generator from typing import Generator
from aiohttp import ClientSession from aiohttp import ClientSession
@@ -183,12 +184,13 @@ class TGTweet(Tweet):
return message_raw_text.format( return message_raw_text.format(
url=self.url, url=self.url,
author_url=self.author_url, author_url=self.author_url,
author=self.author, author=html.escape(self.author),
text=self.text text=html.escape(self.text)
) )
@property @property
def inline_query_generator(self) -> Generator[InlineQueryResultPhoto | InlineQueryResultVideo, None, None]: def inline_query_generator(self) -> Generator[
InlineQueryResultPhoto | InlineQueryResultVideo | InlineQueryResultMpeg4Gif, None, None]:
for i, tweet_media in enumerate(self.media): for i, tweet_media in enumerate(self.media):
logger.info(str(tweet_media)) logger.info(str(tweet_media))
if tweet_media.type == "image": if tweet_media.type == "image":
@@ -196,7 +198,7 @@ class TGTweet(Tweet):
id=str(i), id=str(i),
photo_url=tweet_media.url, photo_url=tweet_media.url,
thumbnail_url=tweet_media.thumb, thumbnail_url=tweet_media.thumb,
caption=self.message_text if not i else None caption=self.message_text
) )
elif tweet_media.type == "video": elif tweet_media.type == "video":
yield InlineQueryResultVideo( yield InlineQueryResultVideo(
@@ -205,18 +207,18 @@ class TGTweet(Tweet):
mime_type="video/mp4", mime_type="video/mp4",
thumbnail_url=tweet_media.thumb, thumbnail_url=tweet_media.thumb,
title=self.text, title=self.text,
caption=self.message_text if not i else None caption=self.message_text
) )
elif tweet_media.type == "gif": elif tweet_media.type == "gif":
yield InlineQueryResultMpeg4Gif( yield InlineQueryResultMpeg4Gif(
id=str(i), id=str(i),
mpeg4_url=tweet_media.url, mpeg4_url=tweet_media.url,
thumbnail_url=tweet_media.thumb, thumbnail_url=tweet_media.thumb,
caption=self.message_text if not i else None caption=self.message_text
) )
@property @property
def pm_media_generator(self) -> Generator[InputMediaPhoto | InputMediaVideo, None, None]: def pm_media_generator(self) -> Generator[InputMediaPhoto | InputMediaVideo | InputMediaAnimation, None, None]:
for tweet_media in self.media: for tweet_media in self.media:
logger.info(str(tweet_media)) logger.info(str(tweet_media))
if tweet_media.type == "image": if tweet_media.type == "image":