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

如何通过Slash命令修改Nextcord.py机器人的活动状态

如何通过Slash命令修改Nextcord.py机器人的活动状态

嘿,别慌!这个需求其实很好实现,我给你整理了完整的步骤和代码示例,跟着来就行~

首先,你需要确保已经导入了Nextcord里处理活动状态的必要模块,然后按照下面的步骤编写slash命令:

1. 导入核心模块

先把需要的工具包导入,这是基础:

import nextcord
from nextcord.ext import commands
from nextcord import Activity, ActivityType

2. 定义机器人实例

这部分你应该已经有了,但还是提一下,要确保开启了必要的intents:

# 前缀可以根据你的习惯修改,关键是要开启所有必要的intents
bot = commands.Bot(command_prefix="!", intents=nextcord.Intents.all())

3. 编写/setbotstatus slash命令

这是核心部分,我们直接写带权限控制和参数选择的命令:

@bot.slash_command(
    name="setbotstatus",
    description="手动修改机器人的活动状态",
    default_member_permissions=128  # 这个值对应Discord管理员权限,只有管理员能调用该命令
)
async def set_bot_status(
    interaction: nextcord.Interaction,
    activity_type: str = nextcord.SlashOption(
        name="activity",
        description="选择活动类型(比如Listening/Playing)",
        required=True,
        # 提供下拉选项避免用户输入错误
        choices=["Listening", "Playing", "Watching", "Streaming", "Competing"]
    ),
    name: str = nextcord.SlashOption(
        name="name",
        description="活动的具体内容名称",
        required=True
    )
):
    # 把用户选择的字符串类型映射到Nextcord的ActivityType枚举
    type_mapping = {
        "Listening": ActivityType.listening,
        "Playing": ActivityType.playing,
        "Watching": ActivityType.watching,
        "Streaming": ActivityType.streaming,
        "Competing": ActivityType.competing
    }
    
    # 创建对应的活动对象
    new_activity = Activity(type=type_mapping[activity_type], name=name)
    # 修改机器人的在线状态
    await bot.change_presence(activity=new_activity)
    
    # 给用户发送仅自己可见的确认消息,避免刷屏
    await interaction.response.send_message(
        f"搞定啦!机器人状态已设置为:{activity_type} to {name}",
        ephemeral=True
    )

一些额外说明

  • 权限控制:default_member_permissions=128对应的是Discord的管理员权限,刚好符合你要求的仅特定权限成员可使用的需求。
  • 活动类型选择:我加了下拉选项,用户不用手动输入,避免拼写错误,如果你需要调整可选类型,直接修改choices列表即可。
  • 扩展支持:如果需要支持Streaming类型(带直播链接),可以在命令里再加一个url参数,创建Activity时加上url=url即可。

这样一来,用户就能用/setbotstatus <活动类型> <内容名称>的格式修改机器人状态啦,比如输入/setbotstatus Listening 你的指令,机器人状态就会变成“Listening to 你的指令”~

备注:内容来源于stack exchange,提问作者misterbonkers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:13:10