private void _contextManager_VoteInitiated(ArkServerContext serverContext, VoteInitiatedEventArgs args) { if (args == null || args.Item == null) { return; } var handler = GetVoteHandler(args.Item); if (handler == null) { return; } //reminder, one minute before expiry var reminderAt = args.Item.Finished.AddMinutes(-1); if (DateTime.Now < reminderAt) { _scheduledTasksManager.AddTimedTask(new TimedTask { When = reminderAt, Tag = "vote_" + args.Item.Id, Callback = new Func <Task>(async() => { var result = handler.VoteIsAboutToExpire(); if (result == null) { return; } if (result.MessageRcon != null) { await serverContext.Steam.SendRconCommand($"serverchat {result.MessageRcon.ReplaceRconSpecialChars()}"); } if (result.MessageAnnouncement != null && !string.IsNullOrWhiteSpace(_config.Discord.AnnouncementChannel)) { await _discordManager.SendTextMessageToChannelNameOnAllServers(_config.Discord.AnnouncementChannel, result.MessageAnnouncement); } }) }); } //on elapsed _scheduledTasksManager.AddTimedTask(new TimedTask { When = args.Item.Finished, Tag = "vote_" + args.Item.Id, Callback = new Func <Task>(async() => { using (var db = _databaseContextFactory.Create()) { var vote = db.Votes.FirstOrDefault(x => x.Id == args.Item.Id); await VoteFinished(serverContext, db, vote); } }) }); }
private void Context_VoteInitiated(ArkServerContext sender, VoteInitiatedEventArgs e) { VoteInitiated?.Invoke(sender, e); }