C# Discord Bot,尝试为命令包含 API

Posted

技术标签:

【中文标题】C# Discord Bot,尝试为命令包含 API【英文标题】:C# Discord Bot, trying to include an API for a command 【发布时间】:2018-04-17 09:40:43 【问题描述】:

我是一名新手程序员,我正在尝试将一个小的 Discord 机器人放在一起作为服务器。在花了一两个小时试图弄清楚如何使用来自https://icanhazdadjoke.com/api 的 API 之后,我放弃了并前来寻求帮助。

目前我正在使用

public static async Task<string> GetRequest(string url)
     
        using (HttpClient client = new HttpClient())
        
            using (HttpResponseMessage response = await client.GetAsync(url))
            
                using (HttpContent content = response.Content)
                
                    string myContent = await content.ReadAsStringAsync();
                    var obj = JObject.Parse(myContent);
                    var ret = (string)obj["joke"];
                    Console.WriteLine("joke: 0", ret);
                    return ret;
                
                            
        
    

【问题讨论】:

【参考方案1】:

当笑话 API 使用“笑话”时,代码正在寻找带有“事实”标签的内容;您不能只在不同的 API 中使用相同的代码,尤其是当它们具有 JSON 等结构化内容时。

尝试改变

var ret = (string)obj["fact"]

到:

var ret = (string)object["joke"]

我建议您阅读:What is JSON? 在 W3 结束。

并确保始终注意 API 文档:

以 JSON 格式获取随机笑话:

$ curl -H "Accept: application/json" https://icanhazdadjoke.com/

  "id": "R7UfaahVfFd",
  "joke": "My dog used to chase people on a bike a lot. It got so bad I had to take his bike away.",
  "status": 200

您可以看到 JSON 结构和“笑话”字段。

【讨论】:

我在尝试复制/粘贴代码时这样做了。 console output @CasinoBoyale 显然控制台输出显示的代码比您共享的要多,请分享MCVE @CasinoBoyale 另外,请指出是什么准确不起作用;纯粹基于您共享的代码,字段访问是问题。 what detects the command 和 what is done when the command is detected 使用this 3 不会输出到控制台。

以上是关于C# Discord Bot,尝试为命令包含 API的主要内容,如果未能解决你的问题,请参考以下文章

discord bot c# 读取收到的直接消息

尝试通过语音通道播放 youtube 音频时 C# discord bot 未知操作码 8

Discord C# Bot - 删除最新消息

Discord bot c#获取用户信息(不带参数)并发回消息

如何在 C# 中使用 Discord Bot 发送消息?

使 Discord.py Bot 仅在特定渠道中工作