예제 #1
0
        public async Task Retweet(ILambdaContext context)
        {
            var creds = await SecretHelper.GetSecretAsync();

            Auth.SetUserCredentials(creds.ConsumerKey, creds.ConsumerSecret, creds.AccessToken, creds.AccessSecret);

            var searchTerms = new[] { "\".NET Framework\"", "\".NET Core\"", "\".NET 5\"", "dotnet", "dotnetcore", "_dotnetbot_" };

            var searchSince = DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(10));

            var filterTerms = new[] { "domain", "registration", "domainregistration" };

            var me = User.GetAuthenticatedUser();

            foreach (var term in searchTerms)
            {
                var param = new SearchTweetsParameters(term)
                {
                    Since           = searchSince,
                    TweetSearchType = TweetSearchType.OriginalTweetsOnly,
                    Filters         = TweetSearchFilters.Safe
                };

                var tweets = Search.SearchTweets(param);

                foreach (var tweet in tweets)
                {
                    // Exclude tweets that don't specifically mention search terms
                    if (!tweet.Text.Contains(term, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }

                    // Exclude tweets that contain excluded words.
                    if (filterTerms.Any(d => tweet.Text.Contains(d)))
                    {
                        //This sends the questionable tweet to the DM's of the me.User
                        await Message.PublishMessageAsync($"Questionable Tweet : {tweet.Url}", User.GetUserFromScreenName($"{me.ScreenName}").Id);

                        continue;
                    }
                    // Exclude tweets that are from automated GitHub issues, except dotnetissues because
                    // it aggregates them rather than having one separate account for each.
                    if (tweet.CreatedBy.ScreenName.EndsWith("issues", StringComparison.OrdinalIgnoreCase) &&
                        !tweet.CreatedBy.ScreenName.EndsWith("dotnetissues", StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }

                    var retweetTask = tweet.PublishRetweetAsync();
                    var followTask  = me.FollowUserAsync(tweet.CreatedBy.Id);

                    await retweetTask;
                    await followTask;
                }
            }
        }
예제 #2
0
        public async Task Retweet(ILambdaContext context)
        {
            var creds = await SecretHelper.GetSecretAsync();

            Auth.SetUserCredentials(creds.ConsumerKey, creds.ConsumerSecret, creds.AccessToken, creds.AccessSecret);

            var searchSince = DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(31));
            var me          = User.GetAuthenticatedUser();

            await SearchAndRetweetTweets(SearchTerms, searchSince, me);