You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.0
    
    如果项目没有requirements.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:37:11