public void ServerQueryUserRegistrationCommand(BotCommandEventArgs e) { using (var db = new CoreContext()) { var user = UserManager.QueryUser(Subscriber.SubscriberId, Subscriber.SubscriberUniqueId, e.MessageInfo.InvokerUniqueId); Models.ServerQueryUser sqUser = new Models.ServerQueryUser() { UserId = user.UserId, Users = user, //SubscriberId = user.SubscriberId, ServerQueryUsername = e.CommandInfo["username"].Value, ServerQueryPassword = e.CommandInfo["password"].Value, }; Lyralei.Core.ServerQueryConnection.Models.Subscribers subscriberUserCredentials = new Lyralei.Core.ServerQueryConnection.Models.Subscribers() { AdminPassword = sqUser.ServerQueryPassword, AdminUsername = sqUser.ServerQueryUsername, ServerIp = Subscriber.ServerIp, ServerPort = Subscriber.ServerPort, SubscriberId = Subscriber.SubscriberId, SubscriberUniqueId = Subscriber.SubscriberUniqueId, VirtualServerId = Subscriber.VirtualServerId, }; Core.ServerQueryConnection.ServerQueryConnection ServerQueryConnection = new Core.ServerQueryConnection.ServerQueryConnection(subscriberUserCredentials); Thread thread = new Thread((ThreadStart) new SynchronizationCallback(ServerQueryConnection.InitializeQuiet)); thread.Start(); thread.Join(); try { if (ServerQueryConnection.AsyncTcpDispatcher.IsConnected) { var test = ServerQueryConnection.whoAmI; if (test == null) { throw new Exception("Login failure"); } if (test.IsErroneous) { throw new Exception(test.ResponseText); } else { db.ServerQueryUser.Add(sqUser); db.SaveChanges(); ServerQueryConnection.Logout(); ServerQueryConnection.Disconnect(); //User successfully registered ServerQueryConnection.TextReply(e.MessageInfo, "Successfully registered! You can now execute serverquery commands directly to me based on your user permissions."); } } } catch (Exception ex) { logger.Debug(ex, "User failed to register"); ServerQueryConnection.TextReply(e.MessageInfo, "Whoops! Did you put in the right details?"); } } }