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

如何修改Discord用户(客户端)的活动状态?

Discord自定义活动状态实现方案

现有代码显示「正在游玩」的原因

你调用的是Discord Game SDK的活动设置接口,Discord平台对普通开发者应用有硬限制:非官方认证合作的应用,无论代码里指定什么ActivityType,最终展示的前缀都只会是「正在游玩」,这个和代码写法无关,是平台侧的规则限制。
你提到的Python/Node.js绑定方案大多是基于用户Token实现的自bot逻辑,不仅操作麻烦,还违反Discord用户协议,检测到会触发账号封禁,不推荐使用。

无需用户Token的可行实现方式

以下方案都不需要提供账号Token,合规且操作便捷:

  • 本地RPC调用方案
    先去Discord开发者平台创建一个普通应用,拿到对应的ClientID,在本地启动Discord桌面客户端的前提下,通过本地RPC管道和客户端通信即可推送自定义活动状态,全程不需要账号权限验证。
    针对你要展示正在听歌的场景,不需要强行指定ActivityType.Listening,直接把歌曲、歌手信息写到Details和State字段即可,用户能直接看到具体内容,只是前缀固定为「正在游玩」。如果需要更灵活的展示效果,也可以直接用封装好的开源RPC工具,不需要自己对接SDK,传入要展示的文本、图标参数就能生效。
  • 客户端自带自定义状态
    如果不需要展示动态变化的内容,直接点击Discord个人头像旁的状态设置,选择「自定义状态」输入要展示的文本、搭配对应emoji即可,完全不需要写代码。

安全提示:任何要求你输入用户账号Token的状态修改工具都存在盗号风险,不要使用。

代码修正参考

如果用C# Discord RPC库实现,正确写法如下,替换为你自己申请的应用ClientID即可:

// 初始化RPC客户端
var rpcClient = new DiscordRpcClient("替换为你自己的应用ClientID");
rpcClient.Initialize();

var nowplaying = 获取当前播放歌曲信息();
string albumFormatted =  !string.IsNullOrEmpty(nowplaying["album"]) ? $" | 专辑:{nowplaying["album"]}" : "";
var activity = new Discord.Activity
{
    // 普通应用无需指定Type,指定了也不会生效
    Details = nowplaying["name"],
    State = $"歌手:{nowplaying["artist"]}{albumFormatted}",
    Assets = new Discord.Assets
    {
        LargeImage = "music_icon",
        LargeImageText = "正在播放"
    }
};
rpcClient.SetPresence(activity);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:54:24