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

如何将Discord机器人Slash Command同步至群聊或私聊?

如何让Discord机器人的斜杠命令在群聊/私聊中可用?

问题分析

你的斜杠命令目前仅在已邀请的服务器生效,无法在私聊或群组DM中使用,核心问题有两点:

  1. 命令名称包含空格,不符合Discord的命令命名规则
  2. 默认的全局命令同步存在生效延迟,且未针对私有聊天场景配置

解决方案

1. 修正命令名称

Discord斜杠命令的名称不能包含空格,仅支持小写字母、数字、下划线(_)或连字符(-)。修改你的命令定义:

@bot.tree.command(name="randomness_number", description="生成指定范围内的随机数")
async def qr(interaction: discord.Interaction, amount: int):
    await interaction.response.send_message(f"结果是: {random.randint(1, amount)}")

2. 同步命令到用户私有范围(立即生效)

如果你只想让自己在私聊/群组DM中使用命令,可以同步到你的用户私有命令,无需等待全局同步的1小时延迟:

import discord
import random

@bot.event
async def on_ready():
    # 替换为你的Discord用户ID(纯数字形式)
    YOUR_USER_ID = 123456789012345678
    # 同步命令到用户私有范围
    await bot.tree.sync(guild=discord.Object(id=YOUR_USER_ID))
    print(f"机器人已登录: {bot.user},命令已同步到私有范围!")

3. 全局同步(所有用户可在DM使用)

如果想让所有用户都能在私聊中使用你的命令,使用全局同步即可,但需注意全局命令可能需要1小时左右才能在所有场景生效:

@bot.event
async def on_ready():
    await bot.tree.sync()
    print(f"机器人已登录: {bot.user},全局命令已同步!")

4. 必要的机器人设置

确保在Discord开发者门户完成以下配置:

  • 进入你的应用 → Bot → 开启「Message Content Intent」(确保机器人能处理交互消息)
  • 授权机器人时,确认勾选了applications.commands权限范围(OAuth2授权场景)

验证方法

  1. 重启机器人,等待on_ready事件触发并打印同步成功的日志
  2. 打开与机器人的私聊,输入/,查看是否能看到randomness_number命令
  3. 群组DM场景需确保机器人在群组内,同样输入/检查命令是否显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:48:27