public async Task NotifyWorkshopBeginsAsync(Workshop workShop) { await EnsureClientLoggedIn(); var discordMessage = GetDiscordMessage(workShop); var messageContext = await DiscordMessageContext.CreateAsync(_discordClient, discordMessage); if (messageContext.UserMessage == null) { return; } var mentions = await messageContext.UserMessage.GetReactionUsersAsync(ThumbsUpEmote, 1000) .SelectMany(x => x.ToAsyncEnumerable()) .Where(x => !x.IsBot && x.Id != _discordClient.CurrentUser.Id) .Select(x => x.GetMentionString()) .ToListAsync(); if (!mentions.Any()) { return; } var guild = await _discordClient.GetGuildAsync(_settings.GuildId); var channel = await guild.GetTextChannelAsync(_settings.ChannelId); await channel.SendMessageAsync($"Aufgepasst! Der Workshop {workShop.title} beginnt in Kürze! {string.Join(" ", mentions)}"); }
public async Task <DiscordMessage> SendDiscordBotMessage ( Workshop currentWorkshop, Workshop dbWorkshop, DateTime date, Meeting existingMeeting ) { Embed embedMessageToSend; await EnsureClientLoggedIn(); var discordMessage = GetDiscordMessage(dbWorkshop); var messageContext = await DiscordMessageContext.CreateAsync(_discordClient, discordMessage); // We dont have any record in the db yet, so we cannot know wether there is a msg or not if (dbWorkshop == null || messageContext.UserMessage == null) { embedMessageToSend = BuildEmbed(currentWorkshop, date, true); await messageContext.SendAsync(embedMessageToSend); await messageContext.AddReactionAsync(ThumbsUpEmote); return(messageContext.Message); } if (!WorkshopChanged(dbWorkshop, currentWorkshop, existingMeeting)) { return(messageContext.Message); } embedMessageToSend = BuildEmbed(currentWorkshop, date, false); await messageContext.UpdateAsync(x => x.Embed = new Optional <Embed>(embedMessageToSend)); await ResetReactionsIfNecessary(currentWorkshop, ThumbsUpEmote, dbWorkshop, messageContext.UserMessage); return(discordMessage); }
private async Task <DiscordMessageContext> TryGetDiscordUserMessage(DiscordMessage discordMessage) { return(await DiscordMessageContext.CreateAsync(_discordClient, discordMessage)); }