public void Update() { if (_connectStarted.Elapsed.TotalSeconds > 120) { _bot?.Disconnect(); Status = ConnectionStatus.Disconnected; } if (Status != ConnectionStatus.Disconnected) { return; } if (string.IsNullOrWhiteSpace(Program.Settings.Username) || string.IsNullOrWhiteSpace(Program.Settings.Password)) { return; } _hasConnected = false; _connectStarted.Restart(); Program.Logger.Info("Connecting"); _bot = new SteamBot(Program.Settings.Username, Program.Settings.Password, Program.Settings.AuthCode); _bot.OnConnected += BotConnected; _bot.OnDisconnected += BotDisconnected; _bot.OnFriendRequest += BotFriendRequest; _bot.OnPrivateEnter += BotPrivateEnter; _bot.OnChatInvite += BotChatInvite; _bot.Connect(); Status = ConnectionStatus.Connecting; }
public void Disconnect() { foreach (var room in Program.RoomManager.List.OfType <SteamRoom>()) { room.Disconnect(); } _bot.Disconnect(); _bot.OnConnected -= BotConnected; _bot.OnDisconnected -= BotDisconnected; _bot.OnFriendRequest -= BotFriendRequest; _bot.OnPrivateEnter -= BotPrivateEnter; _bot.OnChatInvite -= BotChatInvite; }
public void Update() { if (_connectStarted.Elapsed.TotalSeconds > 120) { if (_bot != null) { _bot.Disconnect(); } Status = ConnectionStatus.Disconnected; } if (Status != ConnectionStatus.Disconnected) { return; } if (string.IsNullOrWhiteSpace(Program.Settings.Username) || string.IsNullOrWhiteSpace(Program.Settings.Password)) { return; } _hasConnected = false; _connectStarted.Restart(); Program.Logger.Info("Connecting"); _bot = new SteamBot(Program.Settings.Username, Program.Settings.Password, Program.Settings.AuthCode); _bot.OnConnected += sender => { _hasConnected = true; _connectStarted.Stop(); _bot.DisplayName = Program.Settings.PersonaName; _bot.PersonaState = EPersonaState.Online; Status = ConnectionStatus.Connected; Program.Logger.Info("Connected"); }; _bot.OnDisconnected += (sender, reason) => { if (reason == SteamBotDisconnectReason.SteamGuard) { Thread.Sleep(TimeSpan.FromMinutes(2)); // TODO: need a better way of entering steamguard auth } if (_hasConnected) { Program.Logger.InfoFormat("Disconnected {0}", reason); _hasConnected = false; } Status = ConnectionStatus.Disconnected; }; _bot.OnFriendRequest += (sender, user) => _bot.AddFriend(user.Id); _bot.OnPrivateEnter += (sender, chat) => { chat.OnMessage += (chatSender, messageSender, message) => Command.Handle(new CommandTarget(chatSender, messageSender), message, ""); }; _bot.OnChatInvite += (sender, chat, @by) => { if (chat.Id.IsIndividualAccount) { _bot.Join(chat.Id); } }; _bot.Connect(); Status = ConnectionStatus.Connecting; }