示例#1
0
        public async Task DoShow()
        {
            var recipientsResult = await _instaApi.GetRankedRecipientsAsync();

            if (!recipientsResult.Succeeded)
            {
                Console.WriteLine("Unable to get ranked recipients");
                return;
            }
            Console.WriteLine($"Got {recipientsResult.Value.Items.Count} ranked threads");
            foreach (var thread in recipientsResult.Value.Items)
            {
                Console.WriteLine($"Threadname: {thread.ThreadTitle}, users: {thread.Users.Count}");
            }

            var inboxThreads = await _instaApi.GetDirectInboxAsync();

            if (!inboxThreads.Succeeded)
            {
                Console.WriteLine("Unable to get inbox");
                return;
            }
            Console.WriteLine($"Got {inboxThreads.Value.Inbox.Threads.Count} inbox threads");
            foreach (var thread in inboxThreads.Value.Inbox.Threads)
            {
                Console.WriteLine($"Threadname: {thread.Title}, users: {thread.Users.Count}");
            }
            var firstThread       = inboxThreads.Value.Inbox.Threads.FirstOrDefault();
            var sendMessageResult = await _instaApi.SendDirectMessage($"{firstThread.Users.FirstOrDefault()?.Pk}",
                                                                      firstThread.ThreadId, "test");

            Console.WriteLine(sendMessageResult.Succeeded ? "Message sent" : "Unable to send message");
        }
        public async Task DoShow()
        {
            var recipientsResult = await _instaApi.GetRankedRecipientsAsync();

            if (!recipientsResult.Succeeded)
            {
                Console.WriteLine("Unable to get ranked recipients");
                return;
            }
            Console.WriteLine($"Got {recipientsResult.Value.Threads.Count} ranked threads");
            foreach (var thread in recipientsResult.Value.Threads)
            {
                Console.WriteLine($"Threadname: {thread.ThreadTitle}, users: {thread.Users.Count}");
            }

            var inboxThreads = await _instaApi.GetDirectInboxAsync(PaginationParameters.MaxPagesToLoad(2));

            if (!inboxThreads.Succeeded)
            {
                Console.WriteLine("Unable to get inbox");
                return;
            }
            Console.WriteLine($"Got {inboxThreads.Value.Inbox.Threads.Count} inbox threads");
            foreach (var thread in inboxThreads.Value.Inbox.Threads)
            {
                Console.WriteLine($"Threadname: {thread.Title}, users: {thread.Users.Count}");
            }
            var firstThread = inboxThreads.Value.Inbox.Threads.FirstOrDefault();
            // send message to specific thread
            var sendMessageResult = await _instaApi.SendDirectMessage($"{firstThread.Users.FirstOrDefault()?.Pk}",
                                                                      firstThread.ThreadId, "test");

            Console.WriteLine(sendMessageResult.Succeeded ? "Message sent" : "Unable to send message");

            // just send message to user (thread not specified)
            sendMessageResult = await _instaApi.SendDirectMessage($"{firstThread.Users.FirstOrDefault()?.Pk}", string.Empty, "one more test");

            Console.WriteLine(sendMessageResult.Succeeded ? "Message sent" : "Unable to send message");
        }
示例#3
0
        private static async void RunDMTaskAsync(TaskModel t, IInstaApi api)
        {
            var users = new List <InstaUserShort>();

            // get essential search results
            foreach (var search in t.Searches)
            {
                foreach (var inString in search.GetInStrings())
                {
                    var _temp = await api.SearchUsersAsync(inString);

                    if (_temp.Succeeded)
                    {
                        users.AddRange(_temp.Value.ToList());
                    }
                }
            }

            var filteredUsers = await Helper.GetFilteredUsersAsync(users, t.Searches, api, 5);

            // Executing
            if (filteredUsers.Count > 0)
            {
                foreach (var user in filteredUsers)
                {
                    if (!user.IsPrivate)
                    {
                        var result = await api.SendDirectMessage(user.UserName, "", await Helper.ConstructCaptionTextAsync(t.GetValues().Text, t.Searches, api));

                        if (result.Succeeded)
                        {
                            t.TaskExecuted();
                            Helper.Log($"Task Executed: {t.Name} - {t.TaskType.ToString()} {Environment.NewLine} {JsonConvert.SerializeObject(result.Value)}");
                        }
                        else
                        {
                            Helper.Log(JsonConvert.SerializeObject(result.Info));
                        }
                    }
                }
            }
        }
示例#4
0
        public static async void Routes(string UserName, int Delay)
        {
            _instaAPI = InstaApiBuilder.CreateBuilder()
                        .SetUser(UserSessionData)
                        .UseLogger(new DebugLogger(LogLevel.Exceptions)).Build();

            var request = await _instaAPI.LoginAsync();

            var userId = File.ReadAllLines("Users.txt").ToList();

            if (request.Succeeded)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Log.Push($"Успешная авторизация: {UserName}");

                while (true)
                {
                    try
                    {
                        var user = await _instaAPI.GetUserAsync(
                            userId[Random.Next(0, userId.Count)]);

                        var message = File.ReadAllLines("messages.txt").ToList();

                        if (message.Count == 0)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Log.Push("Отсутствуют фразы.");
                            break;
                        }

                        if (userId.Count == 0 || !File.Exists("Users.txt"))
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Log.Push("База пользователей отсутствует или ещё не была содана.");
                            break;
                        }

                        if (user.Value != null)
                        {
                            var sendMessage = await _instaAPI.SendDirectMessage(user.Value.Pk.ToString(), null,
                                                                                message[Random.Next(0, message.Count)]);

                            Console.ForegroundColor = ConsoleColor.Cyan;
                            if (sendMessage.Succeeded)
                            {
                                Log.Push($"Сообщение было успешно отправлено на аккаунте: {UserName}");
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Log.Push($"Ошибка при отправке сообщения:\n\tАккаунт: {UserName}\n\tСообщение {user.Info.Message}");
                            }
                        }

                        Thread.Sleep(Delay);
                    }
                    catch (Exception ex)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Log.Push($"Неизвестная ошибка: {ex.Message}");
                        _instaAPI = null;
                    }
                }
            }
            else
            {
                Log.Push($"Ошибка авторизации: {request.Info.Message}");
            }
        }
示例#5
0
        async System.Threading.Tasks.Task MassDirect()
        {
            Stat        = true;
            userInfoLog = await api.GetCurrentUserAsync();

            EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Рассылка сообщений запущена"));
            EventFromMyClass(this,
                             new MyEventMessage(
                                 $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Загружаю базу."));
            try
            {
                string[] stringID = System.IO.File.ReadAllLines(setting.FileNameBaseId);
                foreach (string str in stringID)
                {
                    try
                    {
                        usersID.Add(Convert.ToInt64(str));
                        usersIDcopy.Add(Convert.ToInt64(str));
                    }
                    catch
                    {
                        continue;
                    }
                }
            }
            catch (Exception e)
            {
                EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] ОШИБКА: {e.Message}"));
            }
            EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:МассДирект:{CountMessage}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" +
                                                      $"Выполняется"));

            foreach (long id in usersID)
            {
                try
                {
                    if (_source == null || _source.IsCancellationRequested)
                    {
                        break;
                    }

                    int random = rnd.Next(0, setting.Messages.Count);
                    var x      = await api.SendDirectMessage(id.ToString(), null, setting.Messages[random]);

                    CountMessage++;
                    CountPause++;
                    EventFromMyClass(this,
                                     new MyEventMessage(
                                         $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Oтправил сообщение пользователю {(await api.GetUserInfoByIdAsync(id)).Value.Username}. Kоличество сообщений: {CountMessage}"));
                    EventUpdateGrid(this, new UpdateGridEvent(
                                        $"{userInfoLog.Value.UserName}:МассДирект:{CountMessage}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" +
                                        $"Выполняется"));
                    if (setting.ChekedDeleteBase)
                    {
                        usersIDcopy.Remove(id);
                    }
                    Delay();

                    if (setting.CheckedPause) //Учет паузы
                    {
                        if (setting.PauseLimit <= CountPause)
                        {
                            CountPause = 0;
                            EventFromMyClass(this,
                                             new MyEventMessage(
                                                 $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Пауза на " +
                                                 setting.PauseTime + " минут"));
                            EventUpdateGrid(this, new UpdateGridEvent(
                                                $"{userInfoLog.Value.UserName}:МассДирект:{CountMessage}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" +
                                                $"Пауза"));
                            if (timer != null)
                            {
                                timer.Dispose();
                            }
                            timer = new Timer(CancelDelay, null, 60000 * setting.PauseTime, Timeout.Infinite);
                            ew.Reset();
                            ew.WaitOne();
                        }
                    }
                }
                catch (Exception e)
                {
                    EventFromMyClass(this,
                                     new MyEventMessage(
                                         $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА: {e.Message}"));
                }
            }

            EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Выполнено"));
            EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:МассДирект:{CountMessage}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" +
                                                      $"Завершено"));
            Stat = false;
            Save();
        }