Пример #1
0
 public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
 {
     var payload = Tuple.Create(envelope, messages);
     _messages.Add(payload);
     _messagesObservable.OnNext(payload);
     return base.Send(envelope, adapterArgs, messages);
 }
Пример #2
0
 public override async Task Reply(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
 {
     foreach (var message in messages.Where(message => !string.IsNullOrWhiteSpace(message)))
     {
         await _client.Send(string.Format("@{0} {1}", envelope.User.Name, message), envelope.User.Room);
     }
 }
Пример #3
0
        public override Task Topic(string roomName, AdapterArguments adapterArgs, params string[] messages)
        {
            var mucManager = new MucManager(_client);

            mucManager.ChangeSubject(new Jid(roomName), string.Join(" ", messages));

            return(Task.FromResult(0));
        }
Пример #4
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            var payload = Tuple.Create(envelope, messages);

            _messages.Add(payload);
            _messagesObservable.OnNext(payload);
            return(base.Send(envelope, adapterArgs, messages));
        }
Пример #5
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            foreach (var message in messages.Where(message => !string.IsNullOrWhiteSpace(message)))
            {
                Console.WriteLine(message);
            }

            return(Task.FromResult(0));
        }
Пример #6
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            foreach (var message in messages.Where(message => !string.IsNullOrWhiteSpace(message)))
            {
                Console.WriteLine(message);
            }

            return Task.FromResult(0);
        }
Пример #7
0
        public override Task Topic(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (envelope != null && envelope.User != null)
            {
                return(Topic(envelope.User.Room, adapterArgs, messages));
            }

            return(Task.FromResult(0));
        }
Пример #8
0
        private void InternalSend(string destination, AdapterArguments adapterArgs, string[] messages)
        {
            var room = destination;

            var channel = _rooms.FirstOrDefault(r => StringComparer.InvariantCultureIgnoreCase.Equals(r.Id, room) ||
                                                StringComparer.InvariantCultureIgnoreCase.Equals(r.Name, room));

            if (channel != null)
            {
                room = channel.Id;
                //EnsureBotInRoom(channel);

                if (!channel.IsMember)
                {
                    // Currently bots cannot self enter a room.
                    // Instead we'll just log for now.
                    Logger.ErrorFormat("Bots cannot join rooms. Invite bot into room {0}({1})", channel.Id, channel.Name);
                    return;
                }
            }

            var im = _ims.FirstOrDefault(i => StringComparer.InvariantCultureIgnoreCase.Equals(i.Id, room) ||
                                         StringComparer.InvariantCultureIgnoreCase.Equals(i.User, room));

            if (im != null)
            {
                room = im.Id;
                EnsureBotInRoom(im);
            }

            var user = _users.FirstOrDefault(u => StringComparer.InvariantCultureIgnoreCase.Equals(u.Id, room) ||
                                             StringComparer.InvariantCultureIgnoreCase.Equals(u.Name, room));

            if (user != null)
            {
                var response = _api.ImOpen(user.Id);
                if (!response.Ok)
                {
                    Logger.ErrorFormat("Could not join im channel {0} ({1})", user.Id, response.Error);
                    return;
                }
                room = response.Channel;
                im   = new Im()
                {
                    Id = response.Channel, User = user.Id, IsOpen = true
                };
                _ims.Add(im);
            }

            Logger.DebugFormat("Trying to send message to room {0}({1})", room, destination);

            foreach (var message in messages)
            {
                SlackAPI.Send(_socket, room, message);
            }
        }
Пример #9
0
        public override async Task Topic(string roomName, AdapterArguments adapterArgs, params string[] messages)
        {
            var room = await _client.GetRoomInfo(roomName);

            if (room != null)
            {
                var message = string.Join(" ", messages);
                await _client.Send(string.Format("/topic {0}", message.Substring(0, Math.Min(80, message.Length))), room.Name);
            }
        }
Пример #10
0
        public override Task Topic(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (envelope != null && envelope.Room != null)
            {
                var message = string.Join(" ", messages);
                return(_client.Send(string.Format("/topic {0}", message.Substring(0, Math.Min(80, message.Length))), envelope.Room));
            }

            return(Task.FromResult(0));
        }
Пример #11
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (_confServer.HasValue() && envelope.User.Room.Contains(_confServer))
            {
                _xmppConnection.Send(new agsXMPP.protocol.client.Message(envelope.User.Room, MessageType.groupchat, string.Join(Environment.NewLine, messages)));
            }
            else
            {
                _xmppConnection.Send(new agsXMPP.protocol.client.Message(new Jid(envelope.User.Name), MessageType.chat, string.Join(Environment.NewLine, messages)));
            }

            return(Task.FromResult(0));
        }
Пример #12
0
        public override Task Reply(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (_socket == null)
            {
                return(base.Reply(envelope, adapterArgs, messages));
            }

            var room = envelope.User.Id;

            InternalSend(room, adapterArgs, messages);

            return(base.Reply(envelope, adapterArgs, messages));
        }
Пример #13
0
        public override Task Emote(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null || !messages.Any())
            {
                return(Task.FromResult(0));
            }

            foreach (var message in messages.Select(m => "/me " + m))
            {
                var to = new Jid(envelope.User.Room);
                _client.Send(new agsXMPP.protocol.client.Message(to, string.Equals(to.Server, _confhost) ? MessageType.groupchat : MessageType.chat, message));
            }

            return(Task.FromResult(0));
        }
Пример #14
0
        public override Task Reply(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null || !messages.Any())
            {
                return(Task.FromResult(0));
            }

            var userId = "@" + _nicks[envelope.User.Name];

            foreach (var message in messages)
            {
                _api.PrivateMessageUser(userId, message);
            }

            return(Task.FromResult(0));
        }
Пример #15
0
        public override async Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null)
            {
                return;
            }

            foreach (var message in messages.Where(message => !string.IsNullOrWhiteSpace(message)))
            {
                if (!string.IsNullOrEmpty(envelope.User.Room))
                {
                    await _client.Send(message, envelope.User.Room);
                }
                else
                {
                    await _client.SendPrivateMessage(envelope.User.Name, message);
                }
            }
        }
Пример #16
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null || !messages.Any())
            {
                return(Task.FromResult(0));
            }

            int roomId;

            if (!_roomMap.TryGetValue(envelope.User.Room, out roomId))
            {
                // There's no public room with the envelopes key, so send this
                // as a private message to the user instead.
                return(Reply(envelope, adapterArgs, messages));
            }

            var color = adapterArgs.Color ?? "";

            color = color.ToLowerInvariant();

            if (color != "yellow" &&
                color != "green" &&
                color != "red" &&
                color != "purple" &&
                color != "gray" &&
                color != "random")
            {
                color = "yellow";
            }

            foreach (var message in messages)
            {
                _api.SendRoomNotification(roomId, color, message);
            }

            return(Task.FromResult(0));
        }
Пример #17
0
 public override async Task Topic(string roomName, AdapterArguments adapterArgs, params string[] messages)
 {
     var room = await _client.GetRoomInfo(roomName);
     if (room != null)
     {
         var message = string.Join(" ", messages);
         await _client.Send(string.Format("/topic {0}", message.Substring(0, Math.Min(80, message.Length))), room.Name);
     }
 }
Пример #18
0
        public override Task Topic(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (envelope != null && envelope.Room != null)
            {
                var message = string.Join(" ", messages);
                return _client.Send(string.Format("/topic {0}", message.Substring(0, Math.Min(80, message.Length))), envelope.Room);
            }

            return Task.FromResult(0);
        }
Пример #19
0
        public override Task Topic(string roomName, AdapterArguments adapterArgs, params string[] messages)
        {
            var mucManager = new MucManager(_client);
            mucManager.ChangeSubject(new Jid(roomName), string.Join(" ", messages));

            return Task.FromResult(0);
        }
Пример #20
0
        public override Task Topic(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (envelope != null && envelope.User != null)
            {
                return Topic(envelope.User.Room, adapterArgs, messages);
            }

            return Task.FromResult(0);
        }
Пример #21
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (_confServer.HasValue() && envelope.User.Room.Contains(_confServer))
            {
                _xmppConnection.Send(new agsXMPP.protocol.client.Message(envelope.User.Room, MessageType.groupchat, string.Join(Environment.NewLine, messages)));
            }
            else
            {
                _xmppConnection.Send(new agsXMPP.protocol.client.Message(new Jid(envelope.User.Name), MessageType.chat, string.Join(Environment.NewLine, messages)));
            }

            return Task.FromResult(0);
        }
Пример #22
0
        private void InternalSend(string destination, AdapterArguments adapterArgs, string[] messages)
        {
            var room = destination;

            var channel = _rooms.FirstOrDefault(r => StringComparer.InvariantCultureIgnoreCase.Equals(r.Id, room) ||
                StringComparer.InvariantCultureIgnoreCase.Equals(r.Name, room));

            if (channel != null)
            {
                room = channel.Id;
                //EnsureBotInRoom(channel);

                if (!channel.IsMember)
                {
                    // Currently bots cannot self enter a room.
                    // Instead we'll just log for now.
                    Logger.ErrorFormat("Bots cannot join rooms. Invite bot into room {0}({1})", channel.Id, channel.Name);
                    return;
                }
            }

            var im = _ims.FirstOrDefault(i => StringComparer.InvariantCultureIgnoreCase.Equals(i.Id, room) ||
                StringComparer.InvariantCultureIgnoreCase.Equals(i.User, room));

            if (im != null)
            {
                room = im.Id;
                EnsureBotInRoom(im);
            }

            var user = _users.FirstOrDefault(u => StringComparer.InvariantCultureIgnoreCase.Equals(u.Id, room) ||
                StringComparer.InvariantCultureIgnoreCase.Equals(u.Name, room));

            if (user != null)
            {
                var response = _api.ImOpen(user.Id);
                if (!response.Ok)
                {
                    Logger.ErrorFormat("Could not join im channel {0} ({1})", user.Id, response.Error);
                    return;
                }
                room = response.Channel;
                im = new Im() { Id = response.Channel, User = user.Id, IsOpen = true };
                _ims.Add(im);
            }

            Logger.DebugFormat("Trying to send message to room {0}({1})", room, destination);

            foreach (var message in messages)
            {
                SlackAPI.Send(_socket, room, message);
            }
        }
Пример #23
0
        public override Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null || !messages.Any()) return Task.FromResult(0);

            int roomId;
            if (!_roomMap.TryGetValue(envelope.User.Room, out roomId))
            {
                // There's no public room with the envelopes key, so send this
                // as a private message to the user instead.
                return Reply(envelope, adapterArgs, messages);
            }

            var color = adapterArgs.Color ?? "";
            color = color.ToLowerInvariant();

            if (color != "yellow" &&
                color != "green" &&
                color != "red" &&
                color != "purple" &&
                color != "gray" &&
                color != "random")
                color = "yellow";

            foreach (var message in messages)
            {
                _api.SendRoomNotification(roomId, color, message);
            }

            return Task.FromResult(0);
        }
Пример #24
0
        public override async Task Send(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null)
            {
                return;
            }

            foreach (var message in messages.Where(message => !string.IsNullOrWhiteSpace(message)))
            {
                if (!string.IsNullOrEmpty(envelope.User.Room))
                {
                    await _client.Send(message, envelope.User.Room);
                }
                else
                {
                    await _client.SendPrivateMessage(envelope.User.Name, message);
                }
            }
        }
Пример #25
0
 public override async Task Reply(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
 {
     foreach (var message in messages.Where(message => !string.IsNullOrWhiteSpace(message)))
     {
         await _client.Send(string.Format("@{0} {1}", envelope.User.Name, message), envelope.User.Room);
     }
 }
Пример #26
0
        public override Task Reply(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null || !messages.Any()) return Task.FromResult(0);

            var userId = "@" + _nicks[envelope.User.Name];

            foreach (var message in messages)
            {
                _api.PrivateMessageUser(userId, message);
            }

            return Task.FromResult(0);
        }
Пример #27
0
        public override Task Reply(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (_socket == null)
            {
                return base.Reply(envelope, adapterArgs, messages);
            }

            var room = envelope.User.Id;

            InternalSend(room, adapterArgs, messages);

            return base.Reply(envelope, adapterArgs, messages);
        }
Пример #28
0
        public override Task Emote(Envelope envelope, AdapterArguments adapterArgs, params string[] messages)
        {
            if (messages == null || !messages.Any()) return Task.FromResult(0);

            foreach (var message in messages.Select(m => "/me " + m))
            {
                var to = new Jid(envelope.User.Room);
                _client.Send(new agsXMPP.protocol.client.Message(to, string.Equals(to.Server, _confhost) ? MessageType.groupchat : MessageType.chat, message));
            }

            return Task.FromResult(0);
        }