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

如何用C#开发可自动回复DM的客户端Discord Bot?

C#开发Discord客户端私信自动回复Bot指南

一、选择合适的库

用Discord.Net,这是C#生态中最成熟的Discord API封装库,支持用户账户(客户端Bot)和机器人账户两种模式,完全能满足你读取私信并自动回复的需求。

二、环境与项目准备

  • 安装最新版.NET SDK(推荐.NET 6+)
  • 创建新的控制台应用项目:
    dotnet new console -n DiscordDMBot
    cd DiscordDMBot
    
  • 通过NuGet安装Discord.Net:
    dotnet add package Discord.Net
    

三、核心实现代码

以下是基础的私信自动回复逻辑示例:

using Discord;
using Discord.WebSocket;

var client = new DiscordSocketClient(new DiscordSocketConfig
{
    // 必须开启私信相关意图,否则无法接收私信消息
    GatewayIntents = GatewayIntents.DirectMessages | GatewayIntents.MessageContent
});

// 注册消息接收事件
client.MessageReceived += async (message) =>
{
    // 判断是否为私信消息
    if (message.Channel is IDMChannel)
    {
        // 处理ping指令
        if (message.Content.Equals("ping", StringComparison.OrdinalIgnoreCase))
        {
            await message.Channel.SendMessageAsync("pong");
        }
        // 可扩展更多关键词回复逻辑
        else if (message.Content.Equals("hello", StringComparison.OrdinalIgnoreCase))
        {
            await message.Channel.SendMessageAsync("Hi there!");
        }
    }
};

// 登录(注意:此处使用用户账户Token,获取方式自行查询,需严格遵守Discord服务条款)
await client.LoginAsync(TokenType.User, "你的用户账户Token");
await client.StartAsync();

// 保持程序运行
Console.WriteLine("Bot已启动,按任意键退出...");
Console.ReadKey();

await client.StopAsync();
await client.LogoutAsync();

四、关键注意事项

  • Discord服务条款提醒:官方不鼓励使用用户账户(客户端Bot),这类Bot可能因违反TOS被封号。若仅需处理私信,优先使用机器人账户——机器人账户同样可以接收和回复私信,只需在开发者门户创建机器人并完成配置即可。
  • Token安全:绝对不要将Token硬编码到代码中,建议通过环境变量或配置文件读取。
  • GatewayIntents配置:必须开启DirectMessages和MessageContent意图,否则客户端无法接收私信内容。
  • 异常处理:实际开发中需添加登录失败、消息发送失败等异常的捕获与处理,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:10:50