public Task <CreateEventResult> CreateEvent(CreateEventCriteria criteria) { _createValidator.ValidateAndThrow(criteria); Event newEvent; try { newEvent = EventParsingEngine.Parse(criteria.Query, new TimeSpan(-5, 0, 0)); } catch (Exception ex) { _logger.LogWarning(ex, "Error in creating event with query '{Query}'.", criteria.Query); return(Task.FromResult(new CreateEventResult() { IsSuccessful = false })); } return(Task.FromResult(new CreateEventResult() { Event = newEvent, IsSuccessful = true })); }
public async Task Create([Remainder] string query = null !) { using var setTyping = Context.Channel.EnterTypingState(); var discordOptions = _appOptions.CurrentValue.Discord; var guildOptions = await _guildOptionsManager.GetGuildOptions(new GuildOptionsCriteria() { GuildId = Context.Guild.Id }); var prefix = guildOptions?.Prefix ?? discordOptions.Prefix; var signupEmotes = guildOptions?.SignupEmotes ?? discordOptions.SignupEmotes; if (query is null) { await ReplyAsync($"Try `{prefix}create event <Title> on <Day> at <Time>`, (without `<>`)."); return; } var criteria = new CreateEventCriteria() { GuildId = Context.Guild.Id, Query = query, VoiceRegionId = Context.Guild.VoiceRegionId }; var result = await _eventsManager.CreateEvent(criteria); if (result?.Event is null || !result.IsSuccessful) { await ReplyAsync($"I'm sorry, I could not create an event for you. Try `{prefix}create event <Title> on <Day> at <Time>`."); return; } var ev = result.Event; var eventMsg = await ReplyAsync(message : null, isTTS : false, embed : ev.ToEmbed()); var emotes = signupEmotes.Select(x => Emote.TryParse(x, out var em) ? (IEmote)em : new Emoji(x)).ToList(); emotes.Add(new Emoji("🪑")); // Bench emotes.Add(new Emoji("🕑")); // Late emotes.Add(new Emoji("❌")); // Cancel _ = eventMsg.AddReactionsAsync(emotes.ToArray()); ev.CreationDateTime = eventMsg.Timestamp; ev.Id = eventMsg.Id; var saveCriteria = new SaveEventCriteria() { Event = ev }; _ = _eventsManager.SaveEvent(saveCriteria); }