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

Discord.py InvalidArgument错误:Webhook未关联令牌导致无法删除的问题求助

解决Discord机器人删除Webhook时的"InvalidArgument: This webhook does not have a token associated with it"错误

你的问题出在遍历并删除频道内所有Webhook的操作上。当你调用ctx.channel.webhooks()时,会获取到频道里所有的Webhook——包括那些不是你的机器人创建的、或者机器人没有权限获取其Token的Webhook,这类Webhook没有关联Token,调用delete()方法自然会抛出你看到的错误。

修复方案:直接删除你刚创建的Webhook

你不需要遍历所有Webhook,因为你已经持有了刚创建的Webhook对象引用,直接对它调用delete()即可:

@client.command()
async def clone(ctx, member: discord.User=None, *, message:str=None):
    if member == None or message == None:
        await ctx.send("You need to give a member (mention) and message.")
        return
    # 创建Webhook并保存对象引用
    webhook = await ctx.channel.create_webhook(name=member.name)
    try:
        await webhook.send(
            message,
            username=f"{member.name} (fake)",
            avatar_url=member.avatar_url
        )
    finally:
        # 直接删除刚创建的这个Webhook,不用遍历所有
        await webhook.delete()

为什么之前的方法会出错?

  • ctx.channel.webhooks()返回的列表里,可能包含其他用户创建的Webhook,或者机器人没有权限访问Token的Webhook(比如部分服务器级别的Webhook)。
  • 只有机器人自己创建的Webhook,或者明确被授予管理权限的Webhook,才会包含可用于删除操作的Token。

用try...finally包裹发送消息和删除操作的好处是,哪怕发送消息过程中出现错误,也能确保Webhook被及时清理,不会在频道里留下无用的Webhook残留。

内容的提问来源于stack exchange,提问作者AlwaysInTheDark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:12:47