Example #1
0
        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;
        }
Example #2
0
        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;
        }
Example #3
0
        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;
        }