public async Task OnLoad(object data) { IsLoadingPrevious = true; Message.WasRead = true; var userId = Message.Partner.Model.GetUserId(); var cacheMessages = await Cache.GetMessages(); var messages = cacheMessages.Where(m => m.Recipient == userId || m.Sender == userId) .Select(m => JsonConvert.DeserializeObject <DirectMessage>(m.Data)) .Where(m => m.GetMessageId() < Message.Id) .OrderBy(m => m.CreatedAt); foreach (var m in messages) { var msg = new MessageViewModel(m, Message.Context, Configuration, ViewServiceRepository) { WasRead = true }; await Dispatcher.RunAsync(() => PreviousMessages.Add(msg)); } RaisePropertyChanged(nameof(PreviousMessages)); IsLoadingPrevious = false; await Dispatcher.RunAsync(() => ScrollRequested?.Invoke(this, EventArgs.Empty)); }
/// <summary> /// Called when the textbox is submitted. /// </summary> /// <param name="text"></param> private void OnTextboxSubmit(string text) { if (Overlay.ActiveChannel == null) { return; } var chatMessage = new ChatMessage(Overlay.ActiveChannel.Name, text); ChatManager.SendMessage(Overlay.ActiveChannel, chatMessage); // Delete element if message is found if (PreviousMessages.Contains(text)) { PreviousMessages.Remove(text); } // Save messages PreviousMessages.Add(text); // Scroll to the bottom when sending chat messages var messageContainer = Overlay.ChannelMessageContainers[Overlay.ActiveChannel]; messageContainer.ScrollTo(-messageContainer.ContentContainer.Height, 800); }
private Boolean TryGetMessageToSend(out String message) { message = PreviousMessages .GroupBy(x => x) .OrderByDescending(x => x.Count()).ThenBy(x => x.Key) .Where(x => x.Count() >= MinimumDuplicateCount) .Select(x => x.Key) .FirstOrDefault(); return(message != default); }
private void Client_OnMessageReceived(Object sender, OnMessageReceivedArgs e) { if (ShouldIgnore(e.ChatMessage)) { PreviousMessages.Enqueue(null); } else if (OnCooldown) { MessageCooldownTracker++; if (MessageCooldownTracker > MessageCooldownCount) { OnCooldown = false; MessageCooldownTracker = 0; } } else { PreviousMessages.Enqueue(e.ChatMessage.Message); } if (PreviousMessages.Count >= MessageSampleCount) { // Get the most common message from the last GeneralMessageCount // number of messages, as long as there is more than one // duplicate of it. if (TryGetMessageToSend(out String message)) { TwitchClientManager.SpoolMessage(message); OnCooldown = true; } // Empty the last messages, whether one was sent or not to // avoid copying old messages. PreviousMessages.Clear(); } else if (SpamMessageSampleCounts.Any(count => PreviousMessages.Count >= count)) { // Get the most common message from the last SpamMessageCount // number of messages, as long as there is more than one // duplicate of it. if (TryGetMessageToSend(out String message)) { TwitchClientManager.SpoolMessage(message); // Empty the last messages, if one was sent. PreviousMessages.Clear(); OnCooldown = true; } } }
public async Task <MessageState[]> Handle(PreviousMessages query, IDomainUnitOfWork uow) { // Can use uow to get domain entities var world = await uow.For <World>().TryGet("World"); if (world == null) { return new MessageState[] { } } ; var states = new List <MessageState>(); foreach (var id in MessageIds) { var message = await world.For <Message>().Get(id).ConfigureAwait(false); states.Add(message.State); } return(states.ToArray()); } }
public override void Execute(IEnumerable <String> arguments) { PreviousMessages.Clear(); }
// READY: public async Task Ready() { CasinoGuild = _discord.GetGuild(402839443813302272); TestingGuild = _discord.GetGuild(420240046428258304); TheGrandCodingGuild = _discord.GetGuild(365230804734967840); LoggingGuild = _discord.GetGuild(508229402325286912); await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), ServiceProvider); // Load commands and modules into the command service Services.GithubService.Client.RequestMade += GithubClient_RequestMade; foreach (var g in new SocketGuild[] { CasinoGuild, TestingGuild, TheGrandCodingGuild }) { try { string name = g.Name.Replace("Casino", ""); var usr = g.GetUser(_discord.CurrentUser.Id); bool isSpecial = DateTime.Now.DayOfYear >= 355 && DateTime.Now.DayOfYear <= 359; if (usr.Nickname != name || isSpecial) { await usr.ModifyAsync(x => { if (isSpecial) { x.Nickname = $"{EM_RANDOM_CHRISTMAS} Merry Chistmas! {EM_RANDOM_CHRISTMAS}"; } else { x.Nickname = name; } }); } } catch { } } await _discord.SetGameAsync($"{BOT_PREFIX}help - {DateTime.Now.ToShortTimeString()}"); /*if(!BOT_DEBUG) * { * await BotModule.ActuallyRemoveAllCommands(false, C_LOGS_OTHER_MISC); * }*/ try { PastMessages = new PreviousMessages(); } catch (Exception ex) { LogMessage bleh = new LogMessage(LogSeverity.Error, "PastMsgs", "", ex); LogMsg(bleh); } // Set up hour timer try { DateTime dueTime = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, DateTime.Now.Hour + 1, 0, 0); TimeSpan timeRemaining = dueTime.Subtract(DateTime.Now); HourTimer.Interval = 50; HourTimer.Elapsed += HourElapsed; HourTimer.Enabled = true; } catch (Exception ex) { LogMessage er = new LogMessage(LogSeverity.Error, "HourTimer", "", ex); LogMsg(er); } try { MasterList.MainMasterList.Run(); } catch (Exception ex) { LogMsg("Error in Masterlist: " + ex.ToString(), LogSeverity.Error, "Masl"); try { await TheGrandCodingGuild.GetTextChannel(365233803217731584).SendMessageAsync($"Masterlist failed to start\nMasterlist will be unavailable."); } catch { } try { var modl = _commands.Modules.FirstOrDefault(x => x.Name == "Masterlist Commands"); var newDisable = new CommandDisabled("Masterlist failed to start", modl); DisabledCommands.Add(newDisable); } catch { } } try { Casino.FourAcesCasino.Initialise(); } catch (Exception ex) { LogMsg(ex.ToString(), LogSeverity.Critical, "StrCas"); LogMsg("", LogSeverity.Critical, "StrCas"); LogMsg("Unable to continue since the Casino failed to initialise", LogSeverity.Critical, "StrCas"); try { #if DEBUG #else await C_COUNCIL.SendMessageAsync($"Bot failed to start\nError message has been sent to Alex"); #endif EmbedBuilder builder = new EmbedBuilder() { Title = "Erroed" }; builder.AddField(x => { x.Name = "Message"; x.Value = ex.Message; x.IsInline = true; }); builder.AddField(x => { x.Name = ex.InnerException == null ? "Source" : "Inner Exception"; x.Value = ex.InnerException == null ? ex.Source : ex.InnerException.ToString(); x.IsInline = ex.InnerException == null ? true : false; }); string errMsg = ex.ToString(); if (errMsg.Length > 1499 + " ...".Length) { errMsg = errMsg.Substring(0, 1499) + " ..."; } builder.AddField(x => { x.IsInline = false; x.Name = "Full Error"; x.Value = "```" + errMsg.Replace("`", "'") + "```"; }); await U_BOB123.SendMessageAsync("Bot failure", false, builder.Build()); await C_LOGS_FAC_CHIP.SendMessageAsync("Unable to start bot due to Casino failure", false, builder.Build()); } catch { } if (BOT_DEBUG) { Console.ReadLine(); } Environment.Exit(1); } var cp = new ChatProgramHandle(); try { if (Program.Storage.LastDeletedBulkMessages != DateTime.Now.DayOfYear) { Program.Storage.LastDeletedBulkMessages = DateTime.Now.DayOfYear; await DeleteBulkMessages(); } } catch (Exception ex) { LogMessage er = new LogMessage(LogSeverity.Critical, "NukeHWK", "", ex); LogMsg(er); } // Finished Loading all info LogMsg("Finished Ready() Function - Info Loaded."); }