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

discord.py混合命令(hybrid command)选项参数失效问题求助

问题排查与解决方案

可能的原因及修复方式:

  • 混合命令未同步到Discord服务器
    混合命令需要同步后才能被Discord的/app命令系统识别。你可以在机器人启动时添加同步逻辑:

    @bot.event
    async def on_ready():
        # 针对指定服务器同步(立即生效)
        await bot.tree.sync(guild=discord.Object(id=guild_id))
        # 若需要全局同步(需等待约1小时生效),替换成:await bot.tree.sync()
        print(f"已登录为 {bot.user}")
    

    注意:机器人必须在目标服务器拥有「应用程序命令」权限才能完成同步。

  • guild_id设置错误
    检查guild_id变量是否准确对应你测试用的服务器ID,且为整数类型。如果测试服务器和代码中指定的服务器ID不匹配,这个命令不会在该服务器显示,自然无法触发。

  • 机器人权限不足
    确认机器人在目标服务器拥有「发送消息」和「应用程序命令」权限,否则即使触发命令也无法返回响应。

后续功能优化参考

如果要实现批量发送表情包,记得处理Discord的消息频率限制,避免被限流:

import asyncio
import random

@bot.hybrid_command(name="feed", description="发送指定数量的随机表情包")
@app_commands.guilds(discord.Object(id=guild_id))
async def feed(interaction: discord.Interaction, number: int):
    # 先回复确认,防止交互超时
    await interaction.response.send_message(f"正在准备发送{number}个表情包...")
    # 这里替换成你的表情包获取逻辑,比如从本地列表/API拉取
    meme_list = ["https://example.com/meme1.jpg", "https://example.com/meme2.jpg"]
    for _ in range(number):
        random_meme = random.choice(meme_list)
        await interaction.channel.send(random_meme)
        await asyncio.sleep(1)  # 间隔1秒发送,避免触发限流

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:01:04