Exemple #1
0
        public virtual Task OnBotStarted()
        {
            var profilestring = JsonConvert.SerializeObject(Profile, Formatting.Indented);

            BotLogger.LogVerbose(profilestring);
            return(Task.CompletedTask);
        }
Exemple #2
0
        public async Task MonitorEvents(string websocketAddress)
        {
            if (_exitEvent != null)
            {
                _botLogger.LogDanger("Bot is trying to establish a new connection while there is already a connection.");
                return;
            }
            _exitEvent = new ManualResetEvent(false);

            // Start websocket.
            var url    = new Uri(websocketAddress);
            var client = new WebsocketClient(url)
            {
                ReconnectTimeout = TimeSpan.FromDays(1)
            };

            client.ReconnectionHappened.Subscribe(type => _botLogger.LogVerbose($"WebSocket: {type.Type}"));
            var subscription = client.DisconnectionHappened.Subscribe((t) =>
            {
                _botLogger.LogDanger("Websocket connection dropped!");
                _exitEvent?.Set();
                _exitEvent = null;
            });
            await client.Start();

            // log.
            _botLogger.LogInfo("Listening to your account channel.");
            _botLogger.LogVerbose(websocketAddress + "\n");
            _botLogger.AppendResult(true, 9);

            // Post connect event.
            await _eventSyncer.Init(client);

            await BuildBot.OnBotStarted();

            // Pend.
            _exitEvent?.WaitOne();
            subscription.Dispose();
            await client.Stop(WebSocketCloseStatus.NormalClosure, string.Empty);

            _botLogger.LogVerbose("Websocket connection disconnected.");
        }
Exemple #3
0
        public async Task <bool> Execute(string command)
        {
            await Task.Delay(0);

            if (int.TryParse(command.Substring(4).Trim(), out int convId))
            {
                var conversation = _eventSyncer.Contacts.FirstOrDefault(t => t.ConversationId == convId);
                if (conversation == null)
                {
                    _botLogger.LogDanger($"Conversation with Id '{convId}' was not found!");
                    return(true);
                }
                foreach (var message in conversation.Messages)
                {
                    if (!message.GroupWithPrevious)
                    {
                        _botLogger.LogInfo($"{message.Sender.NickName} says: \t {_aes.OpenSSLDecrypt(message.Content, conversation.AesKey)}");
                    }
                    else
                    {
                        _botLogger.LogInfo($"\t\t\t {_aes.OpenSSLDecrypt(message.Content, conversation.AesKey)}");
                    }
                }
                return(true);
            }
            foreach (var conversation in _eventSyncer.Contacts)
            {
                var online = conversation.Online == true ? "online" :
                             conversation.Online == false ? "offline" : string.Empty;
                _botLogger.LogInfo($"Name:\t{conversation.DisplayName}");
                _botLogger.LogInfo($"ID:\t{conversation.ConversationId}\t{online}\t\t{conversation.Discriminator}");
                if (!string.IsNullOrWhiteSpace(conversation.LatestMessage?.Content))
                {
                    _botLogger.LogInfo($"Last:\t{_aes.OpenSSLDecrypt(conversation.LatestMessage.Content, conversation.AesKey)}");
                    _botLogger.LogInfo($"Time:\t{conversation.LatestMessage.SendTime}");
                }
                if (conversation.UnReadAmount > 0)
                {
                    _botLogger.LogDanger($"Unread:\t**{conversation.UnReadAmount}**");
                }
                if (conversation.SomeoneAtMe)
                {
                    _botLogger.LogWarning("At!");
                }
                if (conversation.Messages.Count > 0)
                {
                    _botLogger.LogVerbose($"Local Messages:\t**{conversation.Messages.Count}**");
                }
                _botLogger.LogInfo("\n");
            }
            return(true);
        }
Exemple #4
0
        public Task MonitorEvents(string websocketAddress)
        {
            var exitEvent = new ManualResetEvent(false);
            var url       = new Uri(websocketAddress);
            var client    = new WebsocketClient(url)
            {
                ReconnectTimeoutMs = (int)TimeSpan.FromSeconds(30).TotalMilliseconds
            };

            client.ReconnectionHappened.Subscribe(type => BotLogger.LogVerbose($"WebSocket: {type}"));
            client.MessageReceived.Subscribe(OnStargateMessage);
            client.Start();
            return(Task.Run(exitEvent.WaitOne));
        }