【发布时间】:2019-11-10 21:35:03
【问题描述】:
我正在尝试制作一个不和谐的机器人,但我在连接不和谐 API 时遇到问题。我正在使用 Visual Studio Community 2019。我使用 .net 核心控制台应用程序模板开始了这个项目。我的 .net 核心版本是 2.2。我已经学习了几个教程,甚至从 git 中提取了一些示例机器人,它们都给了我相同的 Newtonsoft.Json.JsonReaderException 未处理异常错误。
我确实安装了 Discord.Net nuget 包,版本 2.1.1,起初我很困惑,因为我以为我根本没有处理 jsons,但后来意识到 discord.net nuget 包也安装了newtonsoft.json版本 11.0.2。我尝试安装该软件包以查看是否解决了我的问题,但没有解决,我尝试安装版本 11.0.2 和 12.0.2(发布本文时的最新版本)。
运行应用程序时,我的程序停止,Visual Studio 指向我的静态 void 主函数。
Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: <. Path '', line 0, position 0.'
对于制作不和谐机器人的这一特殊尝试,我遵循了本指南:https://docs.stillu.cc/guides/getting_started/first-bot.html
那篇文章指出,如果在异步函数中抛出任何异常,它们将一直抛出到第一个非异步方法,即主方法。那么这是否意味着错误出现在我的 MainAsync 函数中?
如果我让应用崩溃,确切的错误是这样的:
Exception thrown: 'Newtonsoft.Json.JsonReaderException' in System.Private.CoreLib.dll
An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' occurred in System.Private.CoreLib.dll
Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
这是我唯一的文件:
using System;
using Discord;
using System.Threading.Tasks;
using Discord.WebSocket;
namespace Bot
{
class Program
{
private DiscordSocketClient Client;
static void Main() => new Program().MainAsync().GetAwaiter().GetResult();
public async Task MainAsync()
{
Client = new DiscordSocketClient();
Client.Log += Log;
//This is my discord bot token
var token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX";
await Client.LoginAsync(TokenType.Bot, token);
await Client.StartAsync();
await Task.Delay(-1);
}
private Task Log(LogMessage message)
{
Console.WriteLine(message.ToString());
return Task.CompletedTask;
}
}
}
如果我自己不处理 json 文件,有人可以向我解释为什么我会得到 newtonsoft.json,我可以做些什么来摆脱这个错误?
我很感激任何帮助。这也是我第一次在堆栈溢出中发布问题,所以如果我在提问方面做得不对,请告诉我。
【问题讨论】:
-
看起来 Newtonsoft.Json 被要求解析 HTML 而不是 JSON
-
对于我的最后一个机器人,我从这个例子开始:github.com/Aux/Discord.Net-Example