public SendMessageCommand(IRepository <Message> messageRepository,
                                  IEventAggregator eventAgregator,
                                  IChatbotService chabotService,
                                  IUnitOfWork unitOfWork,
                                  IMapper mapper)
        {
            Guard.Against.Null(messageRepository, nameof(messageRepository));
            Guard.Against.Null(eventAgregator, nameof(eventAgregator));
            Guard.Against.Null(chabotService, nameof(chabotService));
            Guard.Against.Null(unitOfWork, nameof(unitOfWork));
            Guard.Against.Null(mapper, nameof(mapper));

            _messageSended     = eventAgregator.GetEvent <MessageSended>();
            _messageRepository = messageRepository;
            _chabotService     = chabotService;
            _unitOfWork        = unitOfWork;
            _mapper            = mapper;
        }
Ejemplo n.º 2
0
 /// <summary> Отправка сообщения </summary>
 public void SendMessage(int userId, string message, IEnumerable <string> attachments = null)
 {
     try
     {
         var result = client.Messages.Send(new Citrina.StandardApi.Models.MessagesSendRequest()
         {
             AccessToken = token, UserId = userId, Message = message, Attachment = attachments == null ? null : string.Join(",", attachments /*attachments.Select(a => "photo" + a.OwnerId + '_' + a.Id)*/.ToArray())
         }).Result;
         if (result.Response.HasValue)
         {
             MessageSended?.Invoke(this, new MessageEventArgs(new Message(userId, DateTime.Now, MessageDirection.Out, message, string.Join(",", attachments ?? Enumerable.Empty <string>()))));
         }
         else
         {
             SendMessageError?.Invoke(this, new MessageEventArgs(new Message(userId, DateTime.Now, MessageDirection.Out, message, string.Join(",", attachments ?? Enumerable.Empty <string>()))));
         }
     }
     catch
     {
         UpdateMessagesError?.Invoke(this, EventArgs.Empty);
     }
 }
Ejemplo n.º 3
0
 public void SendMessage(int userId, string message, IEnumerable <PhotosPhoto> attachments = null)
 {
     try
     {
         var result = cit.Messages.Send(new Citrina.StandardApi.Models.MessagesSendRequest()
         {
             AccessToken = token, UserId = userId, Message = message, Attachment = attachments == null ? null : string.Join(",", attachments.Select(a => "photo" + a.OwnerId + '_' + a.Id).ToArray())
         }).Result;
         if (result.Response.HasValue)
         {
             MessageSended?.Invoke(this, new MessageEventArgs <TUserStates>(new VkMessage <TUserStates>(this, userId, message, result.Response.Value)));
         }
         else
         {
             UpdateMessagesError?.Invoke(this, EventArgs.Empty);
         }
     }
     catch
     {
         UpdateMessagesError?.Invoke(this, EventArgs.Empty);
     }
 }
Ejemplo n.º 4
0
 public async Task AddMessageAsync(ChatMessage chatMessage)
 {
     MessageSended?.Invoke(chatMessage.Message);
 }
Ejemplo n.º 5
0
        public BlocksAcceptor(string listenHost, int listenPort, MessageReceived messageReceived, MessageSended messageSended,
                              ConnectionAccepted connectionAccepted, ReceiveFailed receiveFailed, SendFailed sendFailed)
        {
            log = LogManager.GetLogger(typeof(BlocksAcceptor));

            this.listenHost = listenHost;
            this.listenPort = listenPort;

            this.messageReceived    = messageReceived;
            this.messageSended      = messageSended;
            this.connectionAccepted = connectionAccepted;
            this.receiveFailed      = receiveFailed;
            this.sendFailed         = sendFailed;

            receivePrefixHandler    = new ReceivePrefixHandler();
            receiveMessageHandler   = new ReceiveMessageHandler();
            receiveTypeSelector     = new ReceiveTypeSelector();
            receiveResponseHandler  = new ReceiveResponseHandler();
            receiveAllReadedHandler = new ReceiveAllReadedHandler();
            receiveUPhotoHandler    = new ReceiveUPhotoHandler();

            blockAcceptEventHandler = new EventHandler <SocketAsyncEventArgs>(acceptEvent);
            receiveEventHandler     = new EventHandler <SocketAsyncEventArgs>(receiveEvent);
            blockSendEventHandler   = new EventHandler <SocketAsyncEventArgs>(sendEvent);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Listen for messages from server.
        /// </summary>
        public async void Listen()
        {
            if (!isLoggedIn)
            {
                return;
            }

            // message from server
            Message message;

            while (true)
            {
                try
                {
                    // wait for message
                    message = await client.ReceiveMessageAsync();
                }
                catch (ConnectionInterruptedException)
                {
                    if (isLoggedIn)
                    {
                        ConnectionBreaks?.Invoke();
                    }

                    return;
                }

                // handle message
                if (message is AllUsersMessage)
                {
                    OnlineUsersList  = new List <string>(((AllUsersMessage)message).OnlineUsers);
                    OfflineUsersList = new List <string>(((AllUsersMessage)message).OfflineUsers);
                }
                else if (message is FriendsMessage)
                {
                    OnlineFriendsList  = new List <string>(((FriendsMessage)message).OnlineFriends);
                    OfflineFriendsList = new List <string>(((FriendsMessage)message).OfflineFriends);
                }
                else if (message is IncomeFriendshipRequestsMessage)
                {
                    IncomeRequestsList = new List <string>(((IncomeFriendshipRequestsMessage)message).Logins);
                }
                else if (message is OutcomeFriendshipRequestsMessage)
                {
                    OutcomeRequestsList = new List <string>(((OutcomeFriendshipRequestsMessage)message).Logins);
                }
                else if (message is UserActionMessage)
                {
                    UserActionMessage msg = (UserActionMessage)message;

                    switch (msg.Action)
                    {
                    case UserActions.GoOnline:
                        FriendGoOnline?.Invoke(msg.UserLogin);
                        break;

                    case UserActions.GoOffline:
                        FriendGoOffline?.Invoke(msg.UserLogin);
                        break;

                    case UserActions.AcceptFriendship:
                        FriendshipAccepted?.Invoke(msg.UserLogin, msg.Time);
                        OutcomeRequestsList?.Remove(msg.UserLogin);
                        if (OnlineFriendsList != null && !OnlineFriendsList.Contains(msg.UserLogin))
                        {
                            OnlineFriendsList.Add(msg.UserLogin);
                        }
                        break;

                    case UserActions.RejectFriendship:
                        FriendshipRejected?.Invoke(msg.UserLogin, msg.Time);
                        OutcomeRequestsList?.Remove(msg.UserLogin);
                        break;

                    case UserActions.SendFriendshipRequest:
                        NewFriendshipRequest?.Invoke(msg.UserLogin, msg.Time);
                        if (IncomeRequestsList != null && !IncomeRequestsList.Contains(msg.UserLogin))
                        {
                            IncomeRequestsList.Add(msg.UserLogin);
                        }
                        break;

                    case UserActions.CancelFriendshipRequest:
                        FriendshipRequestCancelled?.Invoke(msg.UserLogin, msg.Time);
                        IncomeRequestsList?.Remove(msg.UserLogin);
                        break;

                    case UserActions.RemoveFromFriends:
                        RemovedFromeFriends?.Invoke(msg.UserLogin, msg.Time);
                        OnlineFriendsList?.Remove(msg.UserLogin);
                        OfflineFriendsList?.Remove(msg.UserLogin);
                        break;

                    case UserActions.MessageSended:
                        MessageSended?.Invoke(msg.UserLogin, msg.Time);
                        break;

                    default:
                        break;
                    }
                }
                else if (message is NewReplyMessage)
                {
                    Conversations.AddReply(
                        ((NewReplyMessage)message).Interlocutor,
                        new ConversationReply
                    {
                        Author = ((NewReplyMessage)message).Author,
                        Time   = ((NewReplyMessage)message).Time,
                        Text   = ((NewReplyMessage)message).Text
                    }
                        );
                    NewReplyComes?.Invoke(
                        ((NewReplyMessage)message).Interlocutor,
                        new ConversationReply
                    {
                        Author = ((NewReplyMessage)message).Author,
                        Time   = ((NewReplyMessage)message).Time,
                        Text   = ((NewReplyMessage)message).Text
                    });
                }
                else if (message is OldReplyMessage)
                {
                    Conversations.InsertReplyToTop(
                        ((OldReplyMessage)message).Interlocutor,
                        new ConversationReply
                    {
                        Author = ((OldReplyMessage)message).Author,
                        Time   = ((OldReplyMessage)message).Time,
                        Text   = ((OldReplyMessage)message).Text
                    }
                        );
                    OldReplyComes?.Invoke(
                        ((OldReplyMessage)message).Interlocutor,
                        new ConversationReply
                    {
                        Author = ((OldReplyMessage)message).Author,
                        Time   = ((OldReplyMessage)message).Time,
                        Text   = ((OldReplyMessage)message).Text
                    });
                }
            }
        }
Ejemplo n.º 7
0
 public void Send(string message)
 {
     MessageSended?.Invoke(this, message);
 }
Ejemplo n.º 8
0
 public Controller()
 {
     vk.MessageReceived     += Vk_MessageReceived;
     vk.MessageSended       += (s, e) => MessageSended?.Invoke(s, e);
     vk.UpdateMessagesError += (s, e) => MessagesUpdateError?.Invoke(s, e);
 }
Ejemplo n.º 9
0
 public void SendMessage(object chat, object message)
 {
     MessageSended?.Invoke(chat, message);
 }
Ejemplo n.º 10
0
 protected virtual void OnMessageSended(MessageSendedEventArgs e)
 {
     MessageSended?.Invoke(this, e);
 }