安排电报机器人发送消息?

时间:2020-08-03 12:06:31

标签: c# telegram telegram-bot

我不能只是这样做

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");
    }
}

因为这要求用户首先在确切的时间发送消息,以便他们接收消息。我如何才能使其针对特定的任何人自动发送一条消息,而不必让该人发送消息的确切时间发送给自动消息?

2 个答案:

答案 0 :(得分:0)

您应该使用Windows提供的界面来安排任务。 另外,您应该将用户的ID存储在数据库中,并在每次运行计划任务时对其进行迭代。

您可以在Creating Scheduled Tasks

中找到有关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的数据库。