Beispiel #1
0
        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));
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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;
                }
            }
        }
Beispiel #5
0
        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());
        }
    }
Beispiel #6
0
 public override void Execute(IEnumerable <String> arguments)
 {
     PreviousMessages.Clear();
 }
Beispiel #7
0
        // 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.");
        }