如何在discord.js中删除交互回调响应?
解决Discord交互回调响应的删除问题
你遇到的METHOD NOT ALLOWED错误,核心原因是用错了API端点——callback接口仅支持POST请求发送初始交互响应,并不提供删除功能。要删除已发送的交互响应,得借助Discord的webhook消息管理接口,因为交互响应本质是通过临时webhook生成的消息。
正确的删除实现方式
1. 删除刚发送的初始响应(无需消息ID)
如果要删除的是刚刚发送的type4回调响应,直接用@original指代这个初始消息即可,不需要额外获取消息ID:
// 删除初始交互响应 client.api.webhooks(client.user.id, interaction.token).messages('@original').delete()
2. 删除指定ID的交互响应
如果后续需要删除某个特定的响应消息,可以先保存发送响应时返回的消息ID,再用以下代码删除:
// 假设messageId是你保存的响应消息ID client.api.webhooks(client.user.id, interaction.token).messages(messageId).delete()
定时删除的实现(可选)
如果需要定时删除,用setTimeout包裹删除逻辑即可,比如设置5秒后自动删除:
// 5秒后删除初始响应 setTimeout(() => { client.api.webhooks(client.user.id, interaction.token).messages('@original').delete() }, 5000)
原理说明
Discord的交互响应机制中,当你通过callback发送初始响应后,这条消息会绑定到一个临时webhook上(由你的机器人ID和交互token唯一标识)。所有对这条响应的后续操作(删除、编辑)都需要通过webhook接口完成,而非之前的interaction/callback端点。
内容的提问来源于stack exchange,提问作者DataMind
相关产品推荐
相关产品推荐

