【发布时间】:2021-07-07 02:06:15
【问题描述】:
我正在制作一个程序,大部分时间都可以在没有人坐在 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;
}
【问题讨论】:
-
用户数据并不总是存在于
Ready。另外,请尝试GetOrCreateDMChannelAsync(RequestOptions)dm 用户 -
你所拥有的将工作只要用户在缓存中
-
如何让用户进入缓存?我也尝试使用
GetOrCreateDMChannelAsync(),但GetUser每次都返回null。我尝试在 Ready-Event 触发后等待 60 秒,我尝试在 Bot 启动后等待 5 分钟。每次_client.GetUser(Name,Number)返回“null”
标签: c# discord discord.net