示例#1
0
        private void ImMarked(ImMarked message)
        {
            var im = base.BotState.Ims.FirstOrDefault(i => i.Id == message.Channel);

            if (im == null)
            {
                return;
            }

            im.LastRead = message.Ts;
        }
示例#2
0
        public void HandlesValidImMarked()
        {
            var ims = new List <DirectMessageChannel>
            {
                new DirectMessageChannel {
                    Id = "CHANID1", LastRead = "1000"
                }
            };

            var mockState = SetupChannelsMock(ims);

            var message = new ImMarked
            {
                Type    = EventType.ImMarked,
                Channel = "CHANID1",
                Ts      = "1001"
            };

            RunHandler(message, mockState);

            Assert.Equal(1, ims.Count);
            Assert.Equal("1001", ims[0].LastRead);
        }
示例#3
0
        private async void OnImMarked(ImMarked message)
        {
            Logger.LogDebug($"Received => Type: {message.type} - SubType: {message.subtype} - Channel: {Context.GetNameFromId(message.channel)} - Raw: {GetRawMessage(message)}");

            if (ShouldMonitor(message.channel))
            {
                var directMessageConversation = new Channel()
                {
                    id = message.channel
                };
                var channelNotification = Context.ChannelsInfo[directMessageConversation.id];
                var messages            = await RunSlackClientMethodAsync <ConversationsMessageHistory, Message[]>(
                    x => Client.GetConversationsHistory(x, directMessageConversation, null, message.ts, HistoryItemsToFetch),
                    x => x.messages);

                messages = messages.Where(y => FilterMessageByDate(y, message.ts)).ToArray();
                var hasUnreadMessages = messages.Any(y => y.user != Client.MySelf.id);
                channelNotification.Update(hasUnreadMessages, hasUnreadMessages);
            }
            else
            {
                Logger.LogDebug("Message dropped");
            }
        }