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

如何在D#+中获取DiscordClient运行时长及解决连接终止错误?

在D#中获取机器人运行时长并制作Embed命令

获取DiscordClient的Uptime

D#的DiscordClient实例自带Uptime属性,返回TimeSpan类型,可直接获取机器人从启动到当前的运行时长。你可以将其格式化为天、小时、分钟、秒的组合文本,提升可读性。

制作查询运行时长的命令

以下是完整的命令实现,通过D#命令模块创建!uptime命令,用DiscordEmbed返回运行时长:

using DSharpPlus;
using DSharpPlus.CommandsNext;
using DSharpPlus.CommandsNext.Attributes;
using DSharpPlus.Entities;

public class BotCommands : BaseCommandModule
{
    [Command("uptime")]
    [Description("查询机器人的在线运行时长")]
    public async Task UptimeCommand(CommandContext ctx)
    {
        // 获取机器人运行时长
        TimeSpan uptime = ctx.Client.Uptime;
        
        // 格式化为易读文本
        string uptimeText = $"**{uptime.Days}**天 **{uptime.Hours}**小时 **{uptime.Minutes}**分钟 **{uptime.Seconds}**秒";
        
        // 创建Embed消息
        var embed = new DiscordEmbedBuilder()
            .WithTitle("🤖 机器人运行时长")
            .WithColor(DiscordColor.Green)
            .AddField("当前在线时长", uptimeText, inline: false)
            .WithTimestamp(DateTimeOffset.Now);
        
        // 发送Embed
        await ctx.RespondAsync(embed: embed.Build());
    }
}

机器人初始化时注册命令模块的代码:

var commands = discord.UseCommandsNext(new CommandsNextConfiguration
{
    StringPrefixes = new[] { "!" } // 自定义命令前缀
});
commands.RegisterCommands<BotCommands>();

修复连接终止错误

连接终止多由网关连接异常导致,常见解决方法如下:

  • 启用自动重连:初始化DiscordClient时开启自动重连,断开后自动尝试恢复连接

    var discord = new DiscordClient(new DiscordConfiguration
    {
        Token = "你的机器人Token",
        TokenType = TokenType.Bot,
        AutoReconnect = true // 开启自动重连
    });
    
  • 监听异常事件:监听ClientErrored和SocketClosed事件,记录错误并在必要时手动触发重连

    discord.ClientErrored += (s, e) =>
    {
        Console.WriteLine($"网关错误: {e.Exception.Message}");
        return Task.CompletedTask;
    };
    
    discord.SocketClosed += (s, e) =>
    {
        Console.WriteLine($"连接断开,代码: {e.CloseCode}, 原因: {e.CloseMessage}");
        // 自动重连失效时手动触发
        _ = discord.ReconnectAsync();
        return Task.CompletedTask;
    };
    
  • 更新D#版本:使用最新稳定版的DSharpPlus,旧版本可能存在已知的连接Bug

  • 遵守API限制:避免短时间内发送大量请求,严格遵守Discord的API速率限制

  • 排查网络问题:确保机器人所在服务器能稳定访问Discord网关,检查防火墙、代理是否屏蔽了443端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:00:02