Ejemplo n.º 1
0
        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)}");
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 private async Task <DiscordMessageContext> TryGetDiscordUserMessage(DiscordMessage discordMessage)
 {
     return(await DiscordMessageContext.CreateAsync(_discordClient, discordMessage));
 }