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

Discord Game SDK客户端运行中仍返回not_running错误求助

Discord Game SDK 活动状态设置异常问题

问题现象

  • Core实例初始化加载正常,无初始化报错
  • 执行活动状态设置操作后无响应,绑定的回调函数始终未触发
  • 断点调试确认RunCallbacks()返回结果为DiscordResult_NotRunning,但本地Discord客户端实际处于正常运行状态

测试代码

测试使用的完整C++代码如下(敏感参数已做隐藏处理):

#include "SDK/discord.h"
#include <iostream>
#include <string>
#include <thread>
#include <chrono>

void Log(discord::LogLevel level, const char* message) {
    std::cout << "Log(" << (int)level << "): " << message << "\n";
}

int main()
{
    const int switchID = //the application id;
    const int PS5ID = //the application id;
    const int userID = //my discord id;

    discord::Core* core{};
    discord::Result coreResult;

    coreResult = discord::Core::Create(PS5ID, DiscordCreateFlags_Default, &core);
    coreResult == discord::Result::Ok && core
        ? std::cout << "Core Ok\n"
        : std::cout << "Core Not Ok\n";

    core->SetLogHook(discord::LogLevel::Debug, Log);
    core->SetLogHook(discord::LogLevel::Info, Log);
    core->SetLogHook(discord::LogLevel::Warn, Log);
    core->SetLogHook(discord::LogLevel::Error, Log);

    discord::Activity activity = {};
    activity.SetDetails("Details test");
    activity.SetState("");
    activity.GetAssets().SetSmallImage("");
    activity.GetAssets().SetSmallText("");
    activity.GetAssets().SetLargeImage("ps5_logo");
    activity.GetAssets().SetLargeText("PlayStation 5");
    activity.SetType(discord::ActivityType::Playing);

    core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {
        std::cout << "Activity callback begin\n";

        result == discord::Result::Ok
            ? std::cout << "Activity Callback Ok\n"
            : std::cout << "Activity Callback Not Ok\n";
    });

    while (true) {
        core->RunCallbacks();
        std::this_thread::sleep_for(std::chrono::milliseconds(16));
    }
}

调试截图

排查修复方向

  • 优先排查启动权限问题:这是该错误最高发的诱因。如果测试程序以管理员权限启动,而Discord客户端是普通用户权限启动,Windows会拦截跨权限的本地IPC通信,SDK无法连接到Discord进程就会返回NotRunning。保持两个程序启动权限一致即可修复,推荐都用普通用户权限启动,非必要不要开管理员。
  • 检查Discord端设置与端口占用:打开Discord「用户设置-活动隐私」页面,确认「将当前活动作为状态消息显示」开关为开启状态;同时关闭所有其他接入Discord Rich Presence的程序、第三方状态插件,避免占用Discord的IPC通信端口,操作完成后重启Discord客户端再重试。
  • 确认应用ID与资产配置合法:初始化Core时传入的应用ID必须是你在Discord开发者后台自行创建的有效应用ID,对应应用需开启Rich Presence权限,无封禁、未完成审核等异常状态。注意富状态里引用的图片资产必须是该应用ID下自行上传的资源,直接使用其他应用的资产名(比如代码里写的ps5_logo如果不属于你所用的应用ID)也会导致状态更新异常。
  • 调整日志绑定位置:当前代码是Core实例创建完成后才绑定日志钩子,会漏掉初始化阶段的IPC连接错误日志,排查阶段可以在Core创建成功后第一时间绑定所有级别的日志钩子,拿到更详细的连接报错信息定位问题。
  • 补充异常重连逻辑:主循环调用RunCallbacks()时可以增加返回值判断,如果连续多次返回NotRunning,就销毁当前Core实例重新执行初始化流程,处理偶发的IPC连接断开问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:03:18