如何用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
相关产品推荐
相关产品推荐

