public virtual Task OnBotStarted() { var profilestring = JsonConvert.SerializeObject(Profile, Formatting.Indented); BotLogger.LogVerbose(profilestring); return(Task.CompletedTask); }
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."); }
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); }
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)); }