A bot.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
BaiduInteractive
PBRepositoryManager
PrettyBots.Strategies
TiebaMonitor.Interactive
TiebaMonitor
UnitTestProject1
.gitattributes
.gitignore
LICENSE.md
PrettyBots.sln
README.md

README.md

PrettyBots

A bot.

去年的作品。虽然还没有完成,但目前已经为百度贴吧的浏览、签到、发帖、通知检索和帖子搜索提供了统一的接口。在此基础上,提供了一些简单的任务,例如自动回复、天气查询、简单的纯数字倒数接龙、贴吧迎新和嘲讽来自百度知道的重定向问题等。

例如,在百度允许的情况下,你可以使用如下的语法来完成签到:

[TestMethod]
public void SignInTest()
{
  var visitor = Utility.CreateBaiduVisitor();
  Utility.LoginVisitor(visitor);
  //由于每天每贴吧只能签到一次,因此需要指定一个贴吧列表。
  var destList = new[] {"化学", "化学2", "物理", "生物", "汉服"};
  //抽取第一个没有签到的贴吧。
  var f = destList.Select(fn => visitor.Tieba.Forum(fn))
    .FirstOrDefault(f1 => !f1.HasSignedIn);
  if (f == null)
    Assert.Inconclusive();
  else
  {
    //进行签到。
    Trace.WriteLine("Sign in : " + f.Name);
    f.SignIn();
    Assert.IsTrue(f.HasSignedIn);
    Trace.WriteLine("Rank : " + f.SignInRank);
  }
  visitor.AccountInfo.Logout();
}

在登录后,可以使用如下的方法来检索来自贴吧的通知消息

[TestMethod]
public void MessageNotifierTest()
{
  var visitor = Utility.CreateBaiduVisitor();
  Utility.LoginVisitor(visitor);
  visitor.Messages.Update();
  Trace.WriteLine(visitor.Messages.Counter);
  visitor.Tieba.Messages.Update();
  Trace.WriteLine(visitor.Tieba.Messages.Counters);
  visitor.AccountInfo.Logout();
}

关于其它应用方法,请参阅测试项目。

已知限制

  • 目前每个帖子只能看前十层的楼中楼。
    • 只是因为我犯懒了……
  • 发帖时很容易被百度要求输入验证码。

测试项目

测试项目为 UnitTestProject1。在使用前,你需要在项目中添加一个源文件,用以实现Utility.LoginBaidu函数。例如:

using PrettyBots.Visitors;

namespace UnitTestProject1
{
    partial class Utility
    {
        static partial void LoginBaidu(IAccountInfo account)
        {
            account.Login("username", "password");
        }

        static partial void LoginNetEase(IAccountInfo account)
        {
            account.Login("username", "password");
        }
    }
}