我不能只是这样做
public static void myBot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs msg)
{
if (DateTime.Now.Hour == 01)
{
myBot.SendTextMessageAsync(msg.Message.Chat.Id, "Good Night");
}
}
因为这要求用户首先在确切的时间发送消息,以便他们接收消息。我如何才能使其针对特定的任何人自动发送一条消息,而不必让该人发送消息的确切时间发送给自动消息?
答案 0 :(得分:0)
您应该使用Windows提供的界面来安排任务。 另外,您应该将用户的ID存储在数据库中,并在每次运行计划任务时对其进行迭代。
中找到有关C#任务调度的更多信息答案 1 :(得分:0)
如果使用.net核心进行开发,则可以使用IHostedService来实现后台任务。还存在一个用于完成任务的库。我推荐Hangfire。 它是免费的,易于使用。您可以添加如下任务:
var nextDay = DateTime.Now.AddDays(1);
var sendDate = new DateTime(nextDay.Year, nextDay.Month, nextDay.Day, 1,0,0);
var jobId = BackgroundJob.Schedule(
() => myBot.SendTextMessageAsync(msg.Message.Chat.Id, "Good Night");
(sendDate - DateTime.Now));
您需要使用Hangfire的数据库。