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("")); }
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"); } } }
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(); }
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 })); } }); }
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(); } }