public void StartService()
        {
            if (_isRun)
            {
                return;
            }
            Task.Run(() =>
            {
                _isRun = true;
                while (_isRun)
                {
                    var parameters = new Dictionary <string, string>();
                    var result     = _httpHelper.GetRequest("msg.getUpdates", parameters);

                    var data = (JObject)result.Data;

                    GetUpdates updates;

                    if (result.Status)
                    {
                        updates = data.ToObject <GetUpdates>();
                    }
                    else
                    {
                        throw new BoopRootException(data?.ToObject <Error>()?.Message, (data?.ToObject <Error>()).Code);
                    }

                    if (updates.Messages.Count > 0)
                    {
                        NewMessageEvent?.Invoke(updates.Messages);
                    }
                }
            });
        }
Beispiel #2
0
        public override async Task OnMessage(string inputMessage, NewMessageEvent eventContext)
        {
            await Task.Delay(0);

            if (eventContext.Muted)
            {
                return;
            }
            if (eventContext.Message.SenderId == Profile.Id)
            {
                return;
            }
            var replaced = RemoveMentionMe(inputMessage
                                           .Replace("吗", "")
                                           .Replace('?', '!')
                                           .Replace('?', '!'));

            if (eventContext.Mentioned)
            {
                replaced += Mention(eventContext.Message.Sender);
            }
            await Task.Delay(700);

            await SendMessage(replaced, eventContext.ConversationId);
        }
Beispiel #3
0
        public void BindFunction(string trigger, NewMessageEvent func, SyncrParamType paramType = SyncrParamType.VOID, string[] enumTypes = null)
        {
            if (RegisteredFunctions.ContainsKey(trigger))
            {
                RegisteredFunctions[trigger] += func;
            }
            else
            {
                RegisteredFunctions.Add(trigger, func);
            }

            string eTypes = "";

            if (enumTypes != null)
            {
                foreach (string s in enumTypes)
                {
                    eTypes += s + " ";
                }
            }

            eTypes = eTypes.Trim();

            SendMessage("FUNCTION " + GroupName + " " + ProcName + " " + trigger + " " + paramType.ToString() + " " + eTypes);
        }
Beispiel #4
0
        public async Task OnNewMessageEvent(NewMessageEvent typedEvent)
        {
            string decrypted = AES.OpenSSLDecrypt(typedEvent.Message.Content, typedEvent.AESKey);

            BotLogger.LogInfo($"On message from sender `{typedEvent.Message.Sender.NickName}`: {decrypted}");
            await OnMessage(decrypted, typedEvent).ConfigureAwait(false);
        }
Beispiel #5
0
        public async Task NewMessageEvent(KahlaUser receiver, Conversation conversation, string content, KahlaUser sender, bool alert)
        {
            var token = await _appsContainer.AccessToken();

            var channel         = receiver.CurrentChannel;
            var newMessageEvent = new NewMessageEvent
            {
                ConversationId = conversation.Id,
                Sender         = sender,
                Content        = content,
                AESKey         = conversation.AESKey,
                Muted          = !alert
            };
            var pushTasks = new List <Task>();

            if (channel != -1)
            {
                pushTasks.Add(_stargatePushService.PushMessageAsync(token, channel, _Serialize(newMessageEvent), true));
            }
            if (alert && receiver.Id != sender.Id)
            {
                pushTasks.Add(_thirdPartyPushService.PushAsync(receiver.Id, sender.Email, _Serialize(newMessageEvent)));
            }
            await Task.WhenAll(pushTasks);
        }
Beispiel #6
0
 /// <summary>
 ///     <inheritdoc cref="IBungieClient.AddListener" />
 /// </summary>
 /// <param name="eventHandler"></param>
 public void AddListener(NewMessageEvent eventHandler)
 {
     if (_logListener is not null)
     {
         _logListener.OnNewMessage += eventHandler;
     }
 }
Beispiel #7
0
 public void Fire(string _text)
 {
     if (NewMessageEvent != null)
     {
         NewMessageEvent.Invoke(_text);
     }
 }
Beispiel #8
0
        public async Task <IActionResult> PushTestMessage()
        {
            var user = await GetKahlaUser();

            await _dbContext.Entry(user)
            .Collection(b => b.HisDevices)
            .LoadAsync();

            var messageEvent = new NewMessageEvent
            {
                Message = new Message
                {
                    ConversationId = -1,
                    Sender         = new KahlaUser
                    {
                        IconFilePath = "kahla-user-icon/logo.png",
                        NickName     = "Aiursoft Push System",
                    },
                    SenderId = "<Example user>",
                    Content  = "U2FsdGVkX1+6kWGFqiSsjuPWX2iS7occQbqXm+PCNDLleTdk5p2UVQgQpu8J4XAYSpz/NT6N5mJMUQIUrNt6Ow==",
                    SendTime = DateTime.UtcNow,
                },
                AESKey    = "37316f609ebc4e79bd7812a5f2ab37b8",
                Muted     = false,
                Mentioned = false
            };
            var token = await _appsContainer.AccessToken();

            _cannonService.FireAsync <ThirdPartyPushService>(s => s.PushAsync(user.HisDevices, messageEvent));
            _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, user.CurrentChannel, messageEvent));
            return(this.Protocol(ErrorType.Success, "Successfully sent you a test message to all your devices."));
        }
Beispiel #9
0
 public override async Task OnMessage(string inputMessage, NewMessageEvent eventContext)
 {
     if (eventContext.Message.SenderId != Profile.Id)
     {
         await SendMessage("Copy.", eventContext.ConversationId, eventContext.AESKey);
     }
 }
Beispiel #10
0
        public async Task <IActionResult> PushTestMessage()
        {
            var user = await GetKahlaUser();

            var messageEvent = new NewMessageEvent
            {
                ConversationId = -1,
                Sender         = new KahlaUser
                {
                    HeadImgFileKey = 4251,
                    NickName       = "Aiursoft Push System",
                },
                // This is a test message sent by Aiursoft.
                Content = "U2FsdGVkX1+6kWGFqiSsjuPWX2iS7occQbqXm+PCNDLleTdk5p2UVQgQpu8J4XAYSpz/NT6N5mJMUQIUrNt6Ow==",
                AESKey  = "37316f609ebc4e79bd7812a5f2ab37b8",
                Muted   = false
            };
            var payload = JsonConvert.SerializeObject(messageEvent, Formatting.Indented, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
            await _thirdPartyPushService.PushAsync(user.Id, "*****@*****.**", payload);

            return(this.Protocol(ErrorType.Success, "Successfully sent you a test message to all your devices."));
        }
Beispiel #11
0
        public override async Task OnMessage(string inputMessage, NewMessageEvent eventContext)
        {
            await Task.Delay(0);

            if (eventContext.Muted)
            {
                return;
            }
            if (eventContext.Message.SenderId == Profile.Id)
            {
                return;
            }
            var replaced = inputMessage
                           .Replace("吗", "")
                           .Replace('?', '!')
                           .Replace('?', '!');

            if (eventContext.Mentioned)
            {
                replaced += $" @{eventContext.Message.Sender.NickName.Replace(" ", "")}";
            }
            replaced.Replace($"@{Profile.NickName.Replace(" ", "")}", "");
            await Task.Delay(700);

            await SendMessage(replaced, eventContext.Message.ConversationId, eventContext.AESKey);
        }
Beispiel #12
0
 public async Task<IActionResult> PushTestMessage()
 {
     var user = await GetKahlaUser();
     _dbContext.Entry(user)
         .Collection(b => b.HisDevices)
         .Load();
     var messageEvent = new NewMessageEvent
     {
         Message = new Message
         {
             ConversationId = -1,
             Sender = new KahlaUser
             {
                 IconFilePath = "kahla-user-icon/logo.png",
                 NickName = "Aiursoft Push System",
             },
             SenderId = "<Example user>",
             Content = "U2FsdGVkX1+6kWGFqiSsjuPWX2iS7occQbqXm+PCNDLleTdk5p2UVQgQpu8J4XAYSpz/NT6N5mJMUQIUrNt6Ow==",
             SendTime = DateTime.UtcNow,
         },
         AESKey = "37316f609ebc4e79bd7812a5f2ab37b8",
         Muted = false,
         Mentioned = false
     };
     var payload = JsonConvert.SerializeObject(messageEvent, Formatting.Indented, new JsonSerializerSettings
     {
         ContractResolver = new CamelCasePropertyNamesContractResolver()
     });
     var token = await _appsContainer.AccessToken();
     await _thirdPartyPushService.PushAsync(user.HisDevices, "*****@*****.**", payload);
     await _stargatePushService.PushMessageAsync(token, user.CurrentChannel, payload);
     return this.Protocol(ErrorType.Success, "Successfully sent you a test message to all your devices.");
 }
        public async Task NewMessageEvent(ApplicationUser reciever, Conversation conversation, string content, ApplicationUser sender, bool alert)
        {
            var token = await _appsContainer.AccessToken();

            var channel  = reciever.CurrentChannel;
            var newEvent = new NewMessageEvent
            {
                Type           = EventType.NewMessage,
                ConversationId = conversation.Id,
                Sender         = sender,
                Content        = content,
                AESKey         = conversation.AESKey,
                Muted          = !alert,
                SentByMe       = reciever.Id == sender.Id
            };

            if (channel != -1)
            {
                await _stargatePushService.PushMessageAsync(token, channel, _Serialize(newEvent), true);
            }
            if (alert)
            {
                await _thirdPartyPushService.PushAsync(reciever.Id, sender.Email, _Serialize(newEvent));
            }
        }
        public Task HandleAsync(NewMessageEvent @event, CancellationToken token = default)
        {
            this.Logger.Information(
                "New Message {MessageFile} Arrived -- Running Rules",
                @event.NewMessage);

            Task.Run(
                async() =>
            {
                try
                {
                    await Task.Delay(2000, this._cancellationTokenSource.Token);
                    await this._rulesRunner.RunAsync(
                        this.Rules.ToArray(),
                        @event.NewMessage,
                        this._cancellationTokenSource.Token);
                }
                catch (ObjectDisposedException)
                {
                }
                catch (TaskCanceledException)
                {
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "Failure Running Rules");
                }
            },
                this._cancellationTokenSource.Token);

            return(Task.CompletedTask);
        }
Beispiel #15
0
            public void OnNext(LogEvent value)
            {
                string message = value.RenderMessage();

                string formatted = value.Level + ": " + message;

                NewMessageEvent?.Invoke(value.Level, formatted);
            }
Beispiel #16
0
        public override async Task OnGroupInvitation(int groupId, NewMessageEvent eventContext)
        {
            var group = await GroupsService.GroupSummaryAsync(groupId);

            if (!group.Value.HasPassword)
            {
                await JoinGroup(group.Value.Name, string.Empty);
            }
        }
Beispiel #17
0
        protected virtual async Task OnNewMessageEvent(NewMessageEvent typedEvent)
        {
            string decrypted = _aes.OpenSSLDecrypt(typedEvent.Message.Content, typedEvent.AESKey);

            _botLogger.LogInfo($"On message from sender `{typedEvent.Message.Sender.NickName}`: {decrypted}");
            if (decrypted.StartsWith("[group]") && int.TryParse(decrypted.Substring(7), out int groupId))
            {
                await BuildBot.OnGroupInvitation(groupId, typedEvent);
            }
            await BuildBot.OnMessage(decrypted, typedEvent).ConfigureAwait(false);
        }
Beispiel #18
0
 public void BindFunction(string trigger, NewMessageEvent func)
 {
     if (RegisteredFunctions.ContainsKey(trigger))
     {
         RegisteredFunctions[trigger] += func;
     }
     else
     {
         RegisteredFunctions.Add(trigger, func);
     }
 }
Beispiel #19
0
        public void Handle(NewMessageEvent @event)
        {
            _logger.Information(
                "New Message {MessageFile} Arrived -- Running Rules",
                @event.NewMessage);

            Task.Factory.StartNew(
                () =>
            {
                Thread.Sleep(2000);
                _rulesRunner.Run(Rules.ToArray(), @event.NewMessage);
            });
        }
        public void MessageProcessor(object sender, MessageEventArgs e)
        {
            if (!_isStarted)
            {
                return;
            }
            var model = new Message();

            model.Platform  = Enums.MessengerPlatform.Telegam;
            model.MessageTG = e.Message;
            model.ChatId    = e.Message.Chat.Id;
            model.Text      = e.Message.Text;
            NewMessageEvent.Invoke(model);
        }
Beispiel #21
0
        public void Handle(NewMessageEvent @event)
        {
            _logger.Information(
                "New Message {MessageFile} Arrived -- Running Rules",
                @event.NewMessage);

            Task.Factory.StartNew(
                async() =>
            {
                await Task.Delay(2000);

                this._rulesRunner.Run(this.Rules.ToArray(), @event.NewMessage);
            });
        }
        public Task <string> Handle(NewMessageCommand request, CancellationToken cancellationToken)
        {
            var @event = new NewMessageEvent(
                request.From,
                request.To,
                request.Message,
                request.ActionUrl
                );

            var result = _manager.HandleEvent(@event).FirstOrDefault();

            return(Task.FromResult(
                       result?.ProcessInstanceId.ToString()
                       ));
        }
Beispiel #23
0
        public override async Task OnMessage(string inputMessage, NewMessageEvent eventContext)
        {
            if (eventContext.Muted)
            {
                return;
            }
            if (eventContext.Message.SenderId == Profile.Id)
            {
                return;
            }
            inputMessage = inputMessage.Replace($"@{Profile.NickName.Replace(" ", "")}", "");
            var translated = _bingTranslator.CallTranslate(inputMessage, "en");

            await SendMessage(translated, eventContext.Message.ConversationId, eventContext.AESKey);
        }
        /// <summary>
        /// 接收数据的回调函数
        /// </summary>
        /// <param name="ar"></param>
        private void PipeReadCallback(IAsyncResult ar)
        {
            this.NamedPipeClientStream = (NamedPipeClientStream)ar.AsyncState;
            var count = this.NamedPipeClientStream.EndRead(ar);

            if (count > 0)
            {
                string message = encoding.GetString(data, 0, count);
                NewMessageEvent?.Invoke(message); //简化调用方式 等同于if(NewMessageEvent != Null) {NewMessageEvent(message)}
                this.NamedPipeClientStream.BeginRead(data, 0, data.Length, new AsyncCallback(PipeReadCallback), this.NamedPipeClientStream);
            }
            else if (count == 0)
            {
                ConnectFailEvent?.Invoke();
            }
        }
Beispiel #25
0
        private async Task OnNewMessageEvent(NewMessageEvent typedEvent)
        {
            string decrypted = _aes.OpenSSLDecrypt(typedEvent.Message.Content, typedEvent.AESKey);

            _botLogger.LogInfo($"On message from sender `{typedEvent.Message.Sender.NickName}`: {decrypted}");
            string sendBack = await _bot.OnMessage(decrypted, typedEvent);

            if (!string.IsNullOrWhiteSpace(sendBack))
            {
                await Task.Run(async() =>
                {
                    await Task.Delay(700);
                    var encrypted = _aes.OpenSSLEncrypt(sendBack, typedEvent.AESKey);
                    await _conversationService.SendMessageAsync(encrypted, typedEvent.Message.ConversationId);
                }).ConfigureAwait(false);
            }
        }
        public void MapNewMessageEvent()
        {
            var message = new ChatMessage
            {
                ChatroomId = 2,
                SenderId   = 1,
                TimeUnixMs = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
                Content    = new Content {
                    Text = "Hello!"
                }
            };
            var e = new NewMessageEvent {
                ChatroomId = 2, OperatorId = 1, Message = message
            };
            var m = ChatroomEventMapper.Map(e);

            Assert.Equal(message, m);
        }
Beispiel #27
0
        private void GetPendingMessages()
        {
            FlattiverseMessage message;
            bool messagesReceived = false;

            messageLock.AcquireWriterLock(100);

            while (_connector.NextMessage(out message))
            {
                _messages.Add(message);
                messagesReceived = true;
            }
            messageLock.ReleaseWriterLock();

            if (messagesReceived)
            {
                NewMessageEvent?.Invoke();
            }
        }
Beispiel #28
0
        public override async Task OnMessage(string inputMessage, NewMessageEvent eventContext)
        {
            if (eventContext.Muted)
            {
                return;
            }
            if (eventContext.Message.SenderId == Profile.Id)
            {
                return;
            }
            inputMessage = RemoveMentionMe(inputMessage);
            var translated = _bingTranslator.CallTranslate(inputMessage, "en");

            if (eventContext.Mentioned)
            {
                translated += Mention(eventContext.Message.Sender);
            }
            await SendMessage(translated, eventContext.ConversationId);
        }
Beispiel #29
0
 private void HandleNewMessageSavedEvent(NewMessageEvent obj)
 {
     lock (this)
     {
         MessageModel task = obj.Message as MessageModel;
         if (task != null)
         {
             DispatcherHelper.InvokeOnUiThread(() =>
             {
                 MessageModel m = DataSync.Instance.GetMessageFromClientId(task.ClientMessageId);
                 if (m != null)
                 {
                     m.LoadTaskList();
                     this.AddTask(m);
                 }
             });
         }
     }
 }
        public async Task NewMessageEvent(string recieverId, int conversationId, string Content, KahlaUser sender)
        {
            var token = AppsContainer.AccessToken();
            var user  = await _dbContext.Users.FindAsync(recieverId);

            var channel = user.CurrentChannel;
            var nevent  = new NewMessageEvent
            {
                Type           = EventType.NewMessage,
                ConversationId = conversationId,
                Sender         = sender,
                Content        = Content
            };

            if (channel != -1)
            {
                await _pushMessageService.PushMessageAsync(await token(), channel, _CammalSer(nevent), true);
            }
        }