示例#1
0
        async Task <bool> SendMessage(string recepient, string threadId, string text)
        {
            if (!delay.IsRunning)
            {
                delay.Start();
            }
            else
            {
                while (delay.ElapsedMilliseconds < 1 * 1000)
                {
                    Task.Delay(100).Wait();
                }
            }

            //var x = await api.SendDirectMessage(recepient, threadId, text);

            string           url = "https://youtu.be/pBhnsFAhGx4?list=FLSsho9tQdNbmc7509kcCgcw";
            InstaMessageLink msg = new InstaMessageLink();

            msg.Text = text + " " + url;
            msg.Url  = url;

            var x = await api.SendLinkMessage(msg, long.Parse(recepient));

            if (x.Succeeded)
            {
                msgCount++;
                delay.Restart();
                return(true);
            }
            return(false);
        }
示例#2
0
        public async Task <IResult <InstaDirectInboxThreadList> > SendLinkMessage(InstaMessageLink message, params long[] recipients)
        {
            var threads = new InstaDirectInboxThreadList();

            try
            {
                var directSendMessageUri = UriCreator.GetDirectSendLinkMessageUri();
                var request = HttpHelper.GetDefaultRequest(HttpMethod.Post, directSendMessageUri, _deviceInfo);
                var fields  = new Dictionary <string, string>
                {
                    { "link_text", message.Text },
                    { "link_urls", $"[\"{message.Url}\"]" },
                    { "action", "send_item" }
                };

                if (recipients == null || recipients.Length < 1)
                {
                    return(Result.Fail <InstaDirectInboxThreadList>("Please provide at least one recipient."));
                }

                fields.Add("recipient_users", "[[" + string.Join(",", recipients) + "]]");
                request.Content = new FormUrlEncodedContent(fields);
                var response = await _httpRequestProcessor.SendAsync(request);

                var json = await response.Content.ReadAsStringAsync();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    return(Result.UnExpectedResponse <InstaDirectInboxThreadList>(response, json));
                }
                var result = JsonConvert.DeserializeObject <InstaSendDirectMessageResponse>(json);
                if (!result.IsOk())
                {
                    return(Result.Fail <InstaDirectInboxThreadList>(result.Status));
                }
                threads.AddRange(result.Threads.Select(thread =>
                                                       ConvertersFabric.Instance.GetDirectThreadConverter(thread).Convert()));
                return(Result.Success(threads));
            }
            catch (Exception exception)
            {
                _logger?.LogException(exception);
                return(Result.Fail <InstaDirectInboxThreadList>(exception));
            }
        }