discord.py中user.remove_timeout()无法调用问题求助
Discord.py 解除Timeout时出现
remove_timeout方法不存在的错误 我在开发Discord机器人的禁言/解除禁言命令时,user.timeout(time, reason)能正常执行,但调用user.remove_timeout()时触发错误,提示Member类型没有这个方法。
相关代码
@tree.command(name="unmute", description="unmutes a member") async def unmute(interaction, user: Member): if interaction.guild.me.guild_permissions.moderate_members: if interaction.user.guild_permissions.moderate_members: await user.remove_timeout() await interaction.response.send_message(f"{user.mention} has been unmuted successfully!")
错误信息
Cannot access member "remove_timeout" for type "Member" Member "remove_timeout" is unknown
问题原因
这个问题是因为你使用的discord.py版本过低,remove_timeout()方法是discord.py 2.0及以上版本才新增的API,旧版本的Member类没有这个方法。而timeout()方法在更早的版本就已存在,所以能正常工作。
解决方案
有两种处理方式:
1. 升级discord.py到最新版本
在终端执行以下命令完成升级:
pip install -U discord.py
升级后原有代码无需修改即可正常运行。
2. 使用旧版本兼容的替代方法
如果暂时不想升级版本,可以通过调用timeout(None)来解除用户的禁言,这是旧版本中解除timeout的标准方式:
@tree.command(name="unmute", description="unmutes a member") async def unmute(interaction, user: Member): if interaction.guild.me.guild_permissions.moderate_members: if interaction.user.guild_permissions.moderate_members: # 用timeout(None)替代remove_timeout() await user.timeout(None) await interaction.response.send_message(f"{user.mention} has been unmuted successfully!")
内容的提问来源于stack exchange,提问作者skee
相关产品推荐
相关产品推荐

