c# - Discord.Net SendMessageAsync 没有命令
问题描述
我正在制作一个程序,大部分时间都可以在没有人坐在 PC 前的情况下运行。如果发生需要手动完成的事情,我认为如果该程序可以在 Discord 上向您发送 PM,那就太好了。因此,用户在配置中设置他的姓名和#number,如果发生任何事情,程序会 PM 这个人。所以我设置了所有东西,只要 Discordbot 使用 MessageRecieved-Event 就可以工作。我尝试使用 Ready-Event 但这不起作用。
我的“开始”-代码:
public async Task startDiscordBot(string DiscordName, string DiscordID, string DiscordMessage)
{
_client = new DiscordSocketClient();
setDiscordID(DiscordID); // Sets the #Number of the User
setDiscordMessage(DiscordMessage); // Sets the Message to be send
setDiscordName(DiscordName); // Sets the Name of the User
await _client.LoginAsync(TokenType.Bot, Token);
await _client.StartAsync();
await Task.Delay(-1);
}
编辑:我当前的功能是这样的:
public Task Notification() // not working
{
DiscordSocketClient _client = new DiscordSocketClient();
IUser user = _client.GetUser(Name, ID); // Get the User <--- Returns null
MessageBox.Show($"{user}"); // For debug
IDMChannel channel = (IDMChannel)user.GetOrCreateDMChannelAsync(); // Get a DM Channel
channel.SendMessageAsync(Message); // Send a DM
return Task.CompletedTask;
}
解决方案
我找到了 Anwser。首先感谢您的帮助。我能够大大缩小我的代码。
public async Task startDiscordBot()
{
await _client.LoginAsync(TokenType.Bot, Token);
await _client.StartAsync();
}
public async Task Notification(string message) // Working
{
IUser user = _client.GetUser(Name, ID); // Get the User (wait atleast 10sec after starting)
var channel = await user.GetOrCreateDMChannelAsync(); // Get/Create a DM Channel
await channel.SendMessageAsync(message); // Send a DM
}
这不起作用......每个解决方案都不起作用,因为您需要在 Discord Developer Portal 上启用“服务器成员意图” 。您可以在 Bot 部分下找到它。
推荐阅读
- ldap - Windows cmd 中的 ForgeRock 目录服务器(OpenDj)ldapsearch(不是 Linux)
- node.js - Winston 登录控制台但不在日志文件中
- javascript - 导出数据到excel(.XLSX格式),XL表里面的结构是自定义的
- asp.net - 将文件上传到 FTP 位置会引发错误
- ios - 为什么滚动到底部后我的表格视图消失了?
- fortran - Fortran 错误:(1) 处固有的“datan2”的“y”参数必须为 REAL
- firebase - Firestore 安全规则:如何确保文档中值的唯一性?
- java - 我可以确定属于哪个库类吗?
- laravel - 错误日志在 Guzzle http 的 Laravel 中被截断
- c++ - C++ 使用 g++ 与另一个 libc 链接 - 指定正确的 crt 文件