예제 #1
0
        public async Task <Task> Start()
        {
            if (_bot == null)
            {
                _botLogger.LogDanger("You can't start bot listener without a bot!");
                return(Task.CompletedTask);
            }
            var server = AskServerAddress();

            _kahlaLocation.UseKahlaServer(server);
            if (!await TestKahlaLive())
            {
                return(Task.CompletedTask);
            }
            await OpenSignIn();

            var code = await AskCode();

            await SignIn(code);
            await DisplayMyProfile();

            var websocketAddress = await GetWSAddress();

            _botLogger.LogInfo($"Your account channel: {websocketAddress}");
            return(MonitorEvents(websocketAddress));
        }
예제 #2
0
파일: BotHost.cs 프로젝트: ploxolq/Kahla
        public async Task Connect(Action <string> onGetWebsocket = null)
        {
            _botLogger.LogWarning("Establishing the connection to Kahla...");
            await ReleaseMonitorJob();

            var server = AskServerAddress();

            _settingsService["ServerAddress"] = server;
            _kahlaLocation.UseKahlaServer(server);
            if (!await TestKahlaLive(server))
            {
                return;
            }
            if (!await SignedIn())
            {
                await OpenSignIn();

                var code = await AskCode();
                await SignIn(code);
            }
            else
            {
                _botLogger.LogSuccess("\nYou are already signed in! Welcome!");
            }
            await RefreshUserProfile();

            var websocketAddress = await GetWsAddress();

            // Trigger on request.
            var requests = (await _friendshipService.MyRequestsAsync())
                           .Items
                           .Where(t => !t.Completed);

            foreach (var request in requests)
            {
                await BuildBot.OnFriendRequest(new NewFriendRequestEvent
                {
                    Request = request
                });
            }
            // Trigger group connected.
            var friends = (await _friendshipService.MineAsync());

            foreach (var group in friends.Groups)
            {
                await BuildBot.OnGroupConnected(group);
            }
            onGetWebsocket?.Invoke(websocketAddress);
        }
예제 #3
0
파일: BotBase.cs 프로젝트: LXKing/Kahla
        public async Task <Task> Connect()
        {
            var server = AskServerAddress();

            SettingsService.Save(server);
            KahlaLocation.UseKahlaServer(server);
            if (!await TestKahlaLive())
            {
                return(Task.CompletedTask);
            }
            if (!await SignedIn())
            {
                await OpenSignIn();

                var code = await AskCode();
                await SignIn(code);
            }
            else
            {
                BotLogger.LogSuccess($"You are already signed in! Welcome!");
            }
            await RefreshUserProfile();
            await OnBotInit();

            var websocketAddress = await GetWSAddress();

            BotLogger.LogInfo($"Listening to your account channel: {websocketAddress}");
            var requests = (await FriendshipService.MyRequestsAsync())
                           .Items
                           .Where(t => !t.Completed);

            foreach (var request in requests)
            {
                await OnFriendRequest(new NewFriendRequestEvent
                {
                    RequestId   = request.Id,
                    Requester   = request.Creator,
                    RequesterId = request.CreatorId,
                });
            }
            return(MonitorEvents(websocketAddress));
        }