Glitch平台discord.py机器人AttributeError(Member无timeout)问题求助
Glitch上discord.py机器人timeout方法报错的解决办法
问题根源
Glitch默认安装的discord.py版本大概率低于2.0,而Member.timeout()是discord.py 2.0版本才新增的功能,旧版本不存在这个方法。你在Replit能正常运行是因为Replit默认使用了新版本依赖,Glitch的默认环境没跟上,这就是触发AttributeError的核心原因。
解决步骤
1. 升级discord.py版本
- 打开Glitch项目中的
requirements.txt文件,将其中的discord.py条目修改为指定2.0及以上版本,示例:
如果项目没有discord.py>=2.0.0requirements.txt,直接新建该文件并添加上述内容。 - 重启Glitch项目,平台会自动安装指定版本的依赖包。
2. 验证版本升级结果
可以在机器人代码中加入版本检查片段,运行后查看日志确认:
import discord print(f"当前discord.py版本: {discord.__version__}")
确保输出的版本号≥2.0.0。
3. 确认机器人权限
版本升级后,需保证机器人拥有超时成员(Timeout Members)的权限,且机器人的角色位置高于被禁言用户的角色,避免后续出现权限相关错误。
4. 旧版本替代方案(若无法升级)
如果因环境限制无法升级discord.py到2.0,可使用旧版API的等效写法实现禁言:
import datetime # 示例:禁言用户10分钟 timeout_duration = datetime.timedelta(minutes=10) await member.edit(timed_out_until=discord.utils.utcnow() + timeout_duration)
该写法在discord.py 1.7及以上版本均可生效,与timeout()方法功能完全一致。
额外提醒
- 若重启Glitch后依赖安装失败,查看项目日志排查错误,大概率是网络波动或依赖冲突导致。
- 检查代码中是否自定义过名为
Member的类,这类自定义会覆盖discord.py原生的Member类,也可能引发该报错。
内容的提问来源于stack exchange,提问作者RepublicofAuech
相关产品推荐
相关产品推荐

