Compare commits

...
7 Commits
Author SHA1 Message Date
YoursFunny 85d0257c51 feat: change forward confirm reply markup 2024-04-28 01:08:22 +08:00
YoursFunny 7f90670f1c fix edit message html escape 2024-04-28 01:01:59 +08:00
YoursFunny 755c405196 update ptb version 2024-04-26 15:49:52 +08:00
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
3 changed files with 21 additions and 15 deletions
+10 -7
View File
@@ -1,3 +1,4 @@
import html
from functools import wraps from functools import wraps
from aiohttp import ClientSession from aiohttp import ClientSession
@@ -70,11 +71,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))
@@ -92,9 +95,9 @@ async def edit_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> No
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]:]
message_to_send = context.user_data['message_to_send'] message_to_send = context.user_data['message_to_send']
await message_to_send[0].edit_caption( await message_to_send[0].edit_caption(html.escape(update_text))
update_text, await context.user_data['message_reply'].edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup.from_button( InlineKeyboardMarkup.from_button(
InlineKeyboardButton("↩️ Confirm", callback_data="forward") InlineKeyboardButton("↩️ Confirm", callback_data="forward")
) )
) )
@@ -104,7 +107,7 @@ async def query_forward_message(update: Update, context: ContextTypes.DEFAULT_TY
message_to_send = context.user_data['message_to_send'] message_to_send = context.user_data['message_to_send']
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.delete_message()
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']
+1 -1
View File
@@ -1,2 +1,2 @@
python-telegram-bot[webhooks]~=21.0.1 python-telegram-bot[webhooks]~=21.1.1
aiohttp[speedups]~=3.9.3 aiohttp[speedups]~=3.9.3
+10 -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,14 @@ 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 +199,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 +208,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":