Pyrogram中copy_message()方法问题:无法获取消息文本
问题解决:'Message' object is not subscriptable
核心原因
你用字典下标方式message["text"]访问Message对象的属性,但Message是类实例而非字典,不能通过[]取值,必须用对象属性访问的点号.语法。
修复步骤
- 修正文本获取逻辑:将
tmessage = message["text"]改为tmessage = message.text - 代码里还有两处低级错误需要修正:
random.ranint拼写错误,正确写法是random.randint- 你尝试的判断代码缺少冒号
:,且判断对象错误,应该检查message.text是否为空
修正后的完整代码
import random # 假设已导入对应客户端库,比如 from telethon import TelegramClient client.start() chat = input("@user: ") msg_count = client.get_chat_history_count(chat_id=chat) randid = random.randint(1, msg_count) message = client.copy_message(chat_id=chat, from_chat_id=chat, message_id=randid) # 正确获取消息文本 tmessage = message.text # 可选:避免发送空消息(比如复制的是纯图片/视频时) if tmessage: send = client.send_message(chat_id=chat, text=tmessage) client.stop()
额外说明
- 你之前尝试的
message["Message"]和message.Message都是错误的,Message对象不存在名为"Message"的属性,目标属性是text - 如果复制的消息无文本内容(如纯媒体消息),
message.text会返回空字符串,添加判断可避免无效发送
内容的提问来源于stack exchange,提问作者Daniil
相关产品推荐
相关产品推荐

