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

如何在Pycord中向指定频道响应Slash命令?

解决Pycord Slash命令在其他频道响应的问题

Slash命令必须在Discord规定的时间内完成正式响应,否则会触发「应用未响应」警告,以下是两种可行的解决方式:

方案一:先发送确认响应,再在目标频道发内容

先用ctx.respond完成命令的正式响应(可以给用户一个操作反馈),之后再调用目标频道的send方法发送实际内容。示例代码:

@bot.slash_command(description="在指定频道发送消息")
async def send_to_channel(ctx: ApplicationContext, channel: discord.TextChannel, content: str) -> None:
    # 完成正式响应,避免警告,ephemeral=True仅让命令发起者看到该提示
    await ctx.respond(f"消息已发送到频道 {channel.mention}!", ephemeral=True)
    # 在目标频道发送实际内容
    await channel.send(content)

方案二:发送空响应后自由操作

如果不需要在原频道显示任何提示,可以发送一个空响应(或带自动删除的占位响应),完成命令的正式响应后,即可任意在其他频道发送消息:

@bot.slash_command(description="在指定频道发送消息")
async def secret_send(ctx: ApplicationContext, channel: discord.TextChannel, content: str) -> None:
    # 发送空响应,立即完成命令的正式响应,delete_after=0让响应自动删除
    await ctx.respond("", delete_after=0)
    # 在目标频道发送内容
    await channel.send(content)

注意:如果后续操作存在耗时逻辑,建议先完成ctx.respond响应,再用asyncio.create_task异步处理后续任务,避免超过Discord的3秒响应时限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:50:56