Telethon使用download_media时自定义下载文件命名报错问题
问题原因
报错是download_media方法参数传递错误导致的:
- 你调用
event.download_media()时,该方法已经隐式绑定了当前事件对应的消息对象作为媒体来源,不需要额外传入其他对象作为媒体参数。 - 你代码里传入的
new_message是event.message.message,也就是消息的纯文本内容,根本不是媒体对象,这个多余的参数占了位置,再加上后面的file_name,最终传入的位置参数总数超出了方法允许的范围,触发参数数量不匹配的报错。
修正方案
去掉多余的new_message传参,直接将自定义文件名作为参数传入download_media方法即可。
修正后的完整代码:
@client.on(events.NewMessage(chats=chat_id)) async def newMessageListener(event): new_message = event.message.message print(new_message) print() file_name = "new_image.jpg" if event.message.photo: await event.download_media(file_name) print("New image received") with client: client.run_until_disconnected()
补充说明
如果需要避免多张图片文件名重复被覆盖,可以在自定义文件名中拼接消息ID、时间戳等唯一标识,例如:file_name = f"{event.message.id}_new_image.jpg"
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

