private static void RenderMessages()
        {
            WriteLine(RightPadWithDash(LeftSideDashLine + " Messages "));
            WriteLine(RightPadWithSpace($"{MesseageOutputQueue.Count} messages in queue."));
            WriteLine("________________________________________________");
            var messagesToPrint = 16;

            for (int i = 1; i <= 14; ++i)
            {
                if (MesseageOutputQueue.TryDequeue(out string message))
                {
                    if (CurrentMessages.Count > messagesToPrint)
                    {
                        CurrentMessages.Dequeue();
                    }
                    CurrentMessages.Enqueue(TimeStampThis(message));
                    Logger.AddRow(message);
                }
            }
            var printedMessages = 0;

            foreach (var message in CurrentMessages)
            {
                WriteLine(RightPadWithSpace(message));
                printedMessages++;
            }
            while (printedMessages++ < messagesToPrint)
            {
                WriteLine(RightPadWithSpace("--"));
            }
            WriteLine(RightPadWithDash(""));
        }
示例#2
0
        private async Task CheckMessageDate(int timeoutInMin)
        {
            while (true)
            {
                await Task.Delay(5000);

                try
                {
                    foreach (var message in CurrentMessages.ToList())
                    {
                        if (message.CreatedAt.DateTime.ToLocalTime().AddMinutes(timeoutInMin) < DateTime.Now)
                        {
                            CurrentMessages.Remove(message);
                            await message.DeleteAsync();

                            using (var db = Database.Open())
                            {
                                var easterevent = db.EasterEvents.FirstOrDefault(p => p.MessageId == message.Id);
                                if (easterevent != null)
                                {
                                    easterevent.DespawnTime = DateTime.Now;
                                }
                                await db.SaveChangesAsync();
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    _logger.Error(e, "Can't remove a message");
                }
            }
        }
示例#3
0
        public async Task CatchEgg(ulong userId, ulong messageId)
        {
            var message = CurrentMessages.FirstOrDefault(p => p.Id == messageId);

            if (message == null)
            {
                return;
            }

            var channel = message.Channel;
            var author  = Guild.Users.FirstOrDefault(p => p.Id == userId);

            int eggs = 0;

            using (var db = Database.Open())
            {
                var user = db.Users.FirstOrDefault(p => p.Id == userId) ?? db.Users.AddAsync(new UserEntity {
                    Id = userId, Name = $"{author.Username}#{author.Discriminator}"
                }).Result.Entity;
                var feature = db.Features.FirstOrDefault(p => p.GuildId == Guild.Id && p.UserId == userId) ?? db.Features.AddAsync(new FeatureEntity {
                    UserId = userId, GuildId = Guild.Id
                }).Result.Entity;
                if (feature == null)
                {
                    return;
                }

                feature.Eggs++;
                eggs = feature.Eggs;
                var easterevent = db.EasterEvents.FirstOrDefault(p => p.MessageId == messageId);
                if (easterevent != null)
                {
                    easterevent.UserId    = userId;
                    easterevent.CatchTime = DateTime.Now;
                }

                await db.SaveChangesAsync();
            }
            const int delay = 8000;
            var       embed = new EmbedBuilder();

            embed.WithDescription($"Glückwunsch! {author.Mention} du hast jetzt {eggs} {Constants.EggGoatR} gefangen!");
            embed.WithColor(new Color(90, 92, 96));
            CurrentMessages.Remove(message);
            await message.ModifyAsync(p =>
            {
                p.Content = "";
                p.Embed   = embed.Build();
            });

            await Task.Delay(delay);

            await message.DeleteAsync();
        }
示例#4
0
 public void Consume(CurrentMessages message)
 {
     Execute.OnUIThread(() =>
     {
         if (message.Messages != null)
         {
             message.Messages.Apply(
                 m => instantMessages.Add(new InstantMessageViewModel {
                 Username = m.Username, Contents = m.Contents
             }));
         }
     });
 }
示例#5
0
        public async Task SendEasterEgg()
        {
            var textChannel = GetRandomChannel();
            var message     = await textChannel.SendMessageAsync($"{Constants.EggGoatR}");

            await message.AddReactionAsync(Constants.EggGoatL);

            CurrentMessages.Add(message);
            using (var db = Database.Open())
            {
                await db.EasterEvents.AddAsync(new EasterEventEntity { MessageId = message.Id, SpawnTime = DateTime.Now });

                await db.SaveChangesAsync();
            }
        }