0

I have this small code on c# .NET which publish tweets and shows timeline of twitter using tweetinvi . And I'd like to autoupdate timeline whenever the tweet is sent. Can anyone advice how to do it with event? Thanks for answers.

private void button1click(object sender, EventArgs e)
    {
        if (richTextBox1.Text != "")
        {
            Tweet.PublishTweet(richTextBox1.Text);
            MessageBox.Show("Your tweet was sent!", "Important Message");

        }
        else
        {
            MessageBox.Show("You need to write something!", "Important Message");
        }
    }

    private void Timeline_GetHomeTimeline(object sender, EventArgs e)
    {

    var loggedUser = User.GetLoggedUser();
        string x = "";
        var homeTimelineTweets = loggedUser.GetHomeTimeline();
        foreach (var tweet in homeTimelineTweets)
        {
            x += tweet.Text + Environment.NewLine;
        }
        richTextBox2.Text = x;


    }
4

1 回答 1

0

首先请注意,打几个电话是一种非常糟糕的做法User.GetLoggedUser();。原因是端点被限制为每 15 分钟 15 个请求(每分钟 1 个)。

如果用户碰巧在 15 分钟内发布了超过 15 条推文,那么你的代码就会中断。

现在您有多种解决方案来解决问题,但最好的一个是UserStream(解决方案 1)。

解决方案 1

我建议在Initialized事件中添加以下代码。

var us = Stream.CreateUserStream();
us.TweetCreatedByMe += (sender, args) =>
{
    // Update your rich textbox by adding the new tweet with tweet.Text
    var tweetPublishedByMe = args.Tweet;

    // OR Get your timeline and rewrite the text entirely in your textbox
    var userTimeline = Timeline.GetHomeTimeline();
    if (userTimeline != null)
    {
        // foreach ...
    }
};

us.StartStreamAsync();

解决方案 2

如果您不需要在Timeline每次用户发布推文时重新加载,但您确实需要显示新推文,请使用以下解决方案。

var tweet = Tweet.PublishTweet("hello");
if (tweet != null)
{
    // Update your rich textbox
}

解决方案 3

timeline如果推文已成功发布,请更新您的信息。

var tweet = Tweet.PublishTweet("hello");
if (tweet != null)
{
    var userTimeline = Timeline.GetHomeTimeline();
    if (userTimeline != null)
    {
        // foreach ...
    }
}

注意请注意,我在任何时候都不需要检索LoggedUser。大多数时候 aLoggedUser应该被检索一次,然后在你的应用程序中使用。

另请注意,我是 Tweetinvi 的主要开发人员。

于 2016-02-17T11:20:18.697 回答