使用discord bot从MAL检索用户统计信息

时间:2017-09-10 01:41:13

标签: discord.net

我正在尝试找到一种方法来检索给定用户的动态列表&#34;我的动漫列表&#34;个人资料,无法弄清楚如何检索数据。我希望从他们的个人资料中找到他们已完成,观看,删除等(使用MyAnimeList.net/profile/<insert user name here>找到)。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

官方MyAnimeList API没有任何获取用户个人资料信息的端点。你可以做的就是刮掉网页。

  • 值得庆幸的是,MyAnimeList可以检索用户配置文件的XML,因此比解析HTML要容易得多。 Here's an example
  • 检索XML配置文件后,您可以使用System.Xml命名空间中的类/方法在C#中解析它,例如XDocument.Parse()。在StackOverflow上有很多资源可以帮助你做这件事。

如果您不确定如何从网络上获取此数据,我建议您查看RestSharpFlurl等库。他们抽象了很多样板,用于从网上获取信息,因此您可以专注于编码。如果您想完全跳过XML解析和Web请求,可以让a library为您完成。

为了让您的Discord.NET机器人保持干净,我建议您使用MyAnimeListService课程来执行此Web请求/抓取。然后您可以将其注入您正在使用的模块中为你的(我假设)!anime命令,并专注于在那里使用MAL配置文件数据。这样,您就可以将获取数据的逻辑与向Discord用户呈现数据的逻辑分开。您可以在Discord.NET here中阅读有关依赖注入的内容。假设您正在使用C#,最终结果将是访问模块:

[Group("anime")]
public class AnimeModule : Module
{
    private AnimeModule(MyAnimeListService service)
    {
        Service = service;
    }

    private MyAnimeListService Service { get; }

    [Command]
    public async Task AnimeCommand(string username)
    {
        // call your service here
    }
}