-
-
Notifications
You must be signed in to change notification settings - Fork 133
Description
Checklist
- I am sure the error is coming from Pyrofork's code and not elsewhere
- I have searched in the issue tracker for similar bug reports, including closed ones
- I ran
pip3 install -U git+https://github.com/Mayuri-Chan/pyroforkand reproduced the issue using the latest development version
Description
After upgrading pyrofork from 2.3.68 to 2.3.69.dev1 / 2.3.69, send_media_group() raises an exception related to topics, even though the media group is sent successfully.
This did not happen in 2.3.68, so this is a regression.
Steps to reproduce
After upgrading pyrofork from 2.3.68 to 2.3.69.dev1 / 2.3.69, send_media_group() raises an exception related to topics, even though the media group is sent successfully.
This did not happen in 2.3.68, so this is a regression.
Error
Copy code
Text
TypeError: Messages.init() missing 1 required keyword-only argument: 'topics'
Trying to manually pass topics results in:
Copy code
Text
TypeError: SendMediaGroup.send_media_group() got an unexpected keyword argument 'topics'
Expected
No exception when media is sent successfully
Or topics handled internally / officially supported
Actual
Media group is delivered
Pyrofork throws an exception afterward, breaking handlers
Versions
✅ 2.3.68 — works
❌ 2.3.69.dev1 — broken
❌ 2.3.69 — broken
Notes
Looks like raw.types.messages.Messages now requires topics, but send_media_group() neither sets a default nor exposes it, causing a post-send failure.
Impact
False errors in production bots despite successful delivery.
Code example
@dp.message(Command(commands=["in", "insta", "ig"], prefix=BotCommands))
@new_task
@SmartDefender
async def insta_handler(message: Message, bot: Bot):
progress_message = None
try:
url = None
args = get_args(message)
if args:
match = re.search(r"https?://(www\.)?instagram\.com/\S+", args[0])
if match:
url = match.group(0)
elif message.reply_to_message and message.reply_to_message.text:
match = re.search(r"https?://(www\.)?instagram\.com/\S+", message.reply_to_message.text)
if match:
url = match.group(0)
if not url:
progress_message = await send_message(
chat_id=message.chat.id,
text="<b>Please provide a valid Instagram URL or reply to a message with one ❌</b>",
parse_mode=SmartParseMode.HTML
)
return
content_type = "reel" if "/reel/" in url else "igtv" if "/tv/" in url else "story" if "/stories/" in url else "post"
progress_message = await send_message(
chat_id=message.chat.id,
text="<b>Searching The Video...</b>" if content_type in ["reel", "igtv"] else "<code>🔍 Fetching media from Instagram...</code>",
parse_mode=SmartParseMode.HTML
)
ig_downloader = InstagramDownloader(Config.TEMP_DIR)
content_info = await ig_downloader.download_content(url, progress_message, content_type)
if not content_info:
await delete_messages(message.chat.id, progress_message.message_id)
await send_message(
chat_id=message.chat.id,
text="<b>Unable To Extract The URL 😕</b>",
parse_mode=SmartParseMode.HTML
)
return
media_files = content_info["media_files"]
content_type = content_info["type"]
if content_type in ["carousel", "image"]:
await progress_message.edit_text(
"<code>📤 Uploading...</code>",
parse_mode=SmartParseMode.HTML
)
try:
if content_type == "carousel" and len(media_files) > 1:
for i in range(0, len(media_files), Config.MAX_MEDIA_PER_GROUP):
media_group = []
for media in media_files[i:i + Config.MAX_MEDIA_PER_GROUP]:
if media["type"] == "image":
media_group.append(
InputMediaPhoto(
media=media["filename"]
)
)
else:
media_group.append(
InputMediaVideo(
media=media["filename"],
thumb=media["thumbnail"] if media["thumbnail"] else None,
supports_streaming=True
)
)
await SmartPyro.send_media_group(
chat_id=message.chat.id,
media=media_group
)
else:
media = media_files[0]
if media["type"] == "video":
await SmartPyro.send_video(
chat_id=message.chat.id,
video=media["filename"],
thumb=media["thumbnail"] if media["thumbnail"] else None,
supports_streaming=True
)
else:
await SmartPyro.send_photo(
chat_id=message.chat.id,
photo=media["filename"]
)
await delete_messages(message.chat.id, progress_message.message_id)Logs
Traceback (most recent call last):
File "/root/SmartUtilBot/bot/modules/insta.py", line 220, in insta_handler
await SmartPyro.send_media_group(
File "/usr/local/lib/python3.10/dist-packages/pyrogram/methods/messages/send_media_group.py", line 549, in send_media_group
raw.types.messages.Messages(
TypeError: Messages.init() missing 1 required keyword-only argument: 'topics'
Traceback (most recent call last):
File "/root/SmartUtilBot/bot/modules/insta.py", line 233, in insta_handler
await SmartPyro.send_media_group(
File "/usr/local/lib/python3.10/dist-packages/pyrogram/sync.py", line 54, in async_to_sync_wrap
coroutine = function(*args, **kwargs)
TypeError: SendMediaGroup.send_media_group() got an unexpected keyword argument 'topics'