如何修复:AttributeError: 'TextChannel'对象无'get_message'属性?
解决Discord机器人的AttributeError问题
嘿,看了你的代码和错误描述,我大概率知道问题出在哪了——这多半是discord.py版本迭代带来的方法变更,或者频道对象获取环节出了问题,咱们一步步拆解:
1. 先解决最可能的原因:废弃的消息获取方法
在discord.py 2.0及以上的版本里,get_message()这个方法已经被彻底移除了,官方换成了fetch_message()。你现在调用channel.get_message()自然会触发属性错误,因为这个方法已经不存在啦。
把代码里的这两行替换一下:
# 旧代码 LBoardExp = await channel.get_message(558236923181793280) LBoardBal = await channel.get_message(558237158763397130) # 替换成 LBoardExp = await channel.fetch_message(558236923181793280) LBoardBal = await channel.fetch_message(558237158763397130)
2. 确认频道对象是否有效
另外,你得先确保client.get_channel(557970901614985226)确实拿到了正确的频道对象,而不是None。如果机器人没权限访问这个频道,或者你写错了频道ID,channel就会是None,这时候调用消息方法也会报错(有时候错误信息会被误读)。
可以加个简单的判断来排查:
channel = client.get_channel(557970901614985226) if not channel: print("找不到目标频道!检查下频道ID或者机器人的权限吧") return
3. 检查机器人的权限
别忘了确认你的机器人在目标服务器里有读取消息历史和发送/编辑消息的权限,不然就算频道对了,也没法获取或修改消息。
4. 关于你提到的'Client'无'get'属性
如果真的出现这个错误,那大概率是你在某个地方写错了变量名(比如把其他对象当成client调用get()),但从你贴的代码来看,client.get_channel()是完全正确的写法——除非你用的是超老版本的discord.py?建议先查下版本:
pip show discord.py
如果版本低于1.0,赶紧升级到最新稳定版,旧版本的API早就不被Discord官方支持了。
按上面的步骤调整后,应该就能顺利修改消息内容啦。
内容的提问来源于stack exchange,提问作者Computers 101
相关产品推荐
相关产品推荐

