使用Telethon非机器人账户向Telegram群组发图报错求助
问题描述
- 使用Telethon个人非机器人账户向Telegram群组发送图片时触发
MediaEmptyError - 已尝试将图片移至代码目录,问题未解决
- 报错信息:
telethon.errors.rpcerrorlist.MediaEmptyError: The provided media object is invalid or the current account may not be able to send it (such as games as users) (caused by SendMediaRequest)
- 涉事代码:
filenames = ['C:\Users\Achak\Documents\GitHub\typhoone\qq\0.jpg','C:\Users\Achak\Documents\GitHub\typhoone\qq\1.jpg'] for filename in filenames: try: # Upload the file result = await client.upload(filename) media = InputMediaPhoto(result) # Send the file to the group await client.send_file(group, media) print(f'Sent {filename} to group with ID {group_id}') except PeerFloodError: print('Sending too many messages, stopping...') break
解决方案
修复路径转义问题
Windows路径中的\是转义字符,会导致路径解析错误。两种修正方式:- 使用原始字符串(路径前加
r):filenames = [r'C:\Users\Achak\Documents\GitHub\typhoone\qq\0.jpg', r'C:\Users\Achak\Documents\GitHub\typhoone\qq\1.jpg'] - 改用双反斜杠:
filenames = ['C:\\Users\\Achak\\Documents\\GitHub\\typhoone\\qq\\0.jpg','C:\\Users\\Achak\\Documents\\GitHub\\typhoone\\qq\\1.jpg']
- 使用原始字符串(路径前加
简化send_file调用
Telethon的send_file方法支持直接传入本地文件路径,无需手动调用upload和创建InputMediaPhoto,多余步骤易引发错误。修改后代码:
filenames = [r'C:\Users\Achak\Documents\GitHub\typhoone\qq\0.jpg', r'C:\Users\Achak\Documents\GitHub\typhoone\qq\1.jpg'] for filename in filenames: try: await client.send_file(group, filename) print(f'Sent {filename} to group with ID {group_id}') except PeerFloodError: print('Sending too many messages, stopping...') break
- 验证基础条件
- 确认图片文件未损坏,用图片查看器能正常打开
- 检查个人账号是否有权限向目标群组发送消息(未被禁言、已加入群组)
内容的提问来源于stack exchange,提问作者user15819643
相关产品推荐
相关产品推荐

