【问题标题】:Message content is too long, length must be less or equal to 2000消息内容过长,长度必须小于等于2000
【发布时间】:2019-03-03 22:39:52
【问题描述】:

每当我执行 !fortnite pc Ninja 时,它都可以正常工作,但如果我执行了 !fortnite pc geo.java,它会给我这个错误。我已经尝试了很多方法来解决这个问题,但都没有奏效。我什至尝试了其他名称,它们都起作用了。我认为是“。”以名义,但我不知道如何解决这个问题..任何帮助都会非常感谢。 这是代码:

[Command("fortnite")]
    public async Task fortnite(string type, [Remainder]string name)
    {
        using (var client = new FortniteClient("aec756fb-d0ac-4808-a1e1-9be7c421ebcc"))
        {
            try
            {
                if (type == "pc" || type == "Pc")
                {
                    var response = await client.FindPlayerAsync(Platform.Pc, Convert.ToString(name));
                    //solo
                    var solokills = response.Stats[Playlist.Solo][Stat.Kills].ValueInt;
                    var soloscore = response.Stats[Playlist.Solo][Stat.Score].ValueInt;
                    var solospm = response.Stats[Playlist.Solo][Stat.ScorePerMatch].ValueDec;
                    var solokd = response.Stats[Playlist.Solo][Stat.KillDeathRatio].ValueDec;
                    var solomatches = response.Stats[Playlist.Solo][Stat.Matches].ValueInt;
                    var solowr = response.Stats[Playlist.Solo][Stat.WinRatio].ValueDec;
                    var solokpm = response.Stats[Playlist.Solo][Stat.KillsPerMatch].ValueDec;
                    var solotrnrating = response.Stats[Playlist.Solo][Stat.TrnRating].Value;

                    var pcsolo = Helpers.CreateEmbed(Context, "**Solo**\n\nScore: " + soloscore + "\nScore Per Match: " + solospm + "\nK/D: " + solokd + "\nW/R: " + solowr + "\nMatches: " + solomatches + "\nKills: " + solokills + "\nKills Per Match: " + solokpm + "\nTRN Rating: " + solotrnrating);
                    pcsolo.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, pcsolo);
                    //duo
                    //    await ReplyAsync("", false, pcsolo);

                    var duokills = response.Stats[Playlist.Duo][Stat.Kills].ValueInt;
                    var duoscore = response.Stats[Playlist.Duo][Stat.Score].ValueInt;
                    var duospm = response.Stats[Playlist.Duo][Stat.ScorePerMatch].ValueDec;
                    var duokd = response.Stats[Playlist.Duo][Stat.KillDeathRatio].ValueDec;
                    var duomatches = response.Stats[Playlist.Duo][Stat.Matches].ValueInt;
                    var duowr = response.Stats[Playlist.Duo][Stat.WinRatio].ValueDec;
                    var duokpm = response.Stats[Playlist.Duo][Stat.KillsPerMatch].ValueDec;
                    var duotrnrating = response.Stats[Playlist.Duo][Stat.TrnRating].Value;

                    var pcduo = Helpers.CreateEmbed(Context, "**Duo**\n\nScore: " + duoscore + "\nScore Per Match: " + duospm + "\nK/D: " + duokd + "\nW/R: " + duowr + "\nMatches: " + duomatches + "\nKills: " + duokills + "\nKills Per Match: " + duokpm + "\nTRN Rating: " + duotrnrating);
                    pcduo.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, pcduo);
                    //squad
                    var Squadkills = response.Stats[Playlist.Squad][Stat.Kills].ValueInt;
                    var Squadscore = response.Stats[Playlist.Squad][Stat.Score].ValueInt;
                    var Squadspm = response.Stats[Playlist.Squad][Stat.ScorePerMatch].ValueDec;
                    var Squadkd = response.Stats[Playlist.Squad][Stat.KillDeathRatio].ValueDec;
                    var Squadmatches = response.Stats[Playlist.Squad][Stat.Matches].ValueInt;
                    var Squadwr = response.Stats[Playlist.Squad][Stat.WinRatio].ValueDec;
                    var Squadkpm = response.Stats[Playlist.Squad][Stat.KillsPerMatch].ValueDec;
                    var Squadtrnrating = response.Stats[Playlist.Squad][Stat.TrnRating].Value;

                    var pcSquad = Helpers.CreateEmbed(Context, "**Squad**\n\nScore: " + Squadscore + "\nScore Per Match: " + Squadspm + "\nK/D: " + Squadkd + "\nW/R: " + Squadwr + "\nMatches: " + Squadmatches + "\nKills: " + Squadkills + "\nKills Per Match: " + Squadkpm + "\nTRN Rating: " + Squadtrnrating);
                    pcSquad.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, pcSquad);
                    // await ReplyAsync("", false, pcSquad);
                }
                else if (type == "psn" || type == "Psn")
                {
                    var response = await client.FindPlayerAsync(Platform.Psn, name);
                    //solo
                    var solokills = response.Stats[Playlist.Solo][Stat.Kills].ValueInt;
                    var soloscore = response.Stats[Playlist.Solo][Stat.Score].ValueInt;
                    var solospm = response.Stats[Playlist.Solo][Stat.ScorePerMatch].ValueDec;
                    var solokd = response.Stats[Playlist.Solo][Stat.KillDeathRatio].ValueDec;
                    var solomatches = response.Stats[Playlist.Solo][Stat.Matches].ValueInt;
                    var solowr = response.Stats[Playlist.Solo][Stat.WinRatio].ValueDec;
                    var solokpm = response.Stats[Playlist.Solo][Stat.KillsPerMatch].ValueDec;
                    var solotrnrating = response.Stats[Playlist.Solo][Stat.TrnRating].Value;

                    var psnsolo = Helpers.CreateEmbed(Context, "**Solo**\n\nScore: " + soloscore + "\nScore Per Match: " + solospm + "\nK/D: " + solokd + "\nW/R: " + solowr + "\nMatches: " + solomatches + "\nKills: " + solokills + "\nKills Per Match: " + solokpm + "\nTRN Rating: " + solotrnrating);
                    psnsolo.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, psnsolo);
                    //duo

                    var duokills = response.Stats[Playlist.Duo][Stat.Kills].ValueInt;
                    var duoscore = response.Stats[Playlist.Duo][Stat.Score].ValueInt;
                    var duospm = response.Stats[Playlist.Duo][Stat.ScorePerMatch].ValueDec;
                    var duokd = response.Stats[Playlist.Duo][Stat.KillDeathRatio].ValueDec;
                    var duomatches = response.Stats[Playlist.Duo][Stat.Matches].ValueInt;
                    var duowr = response.Stats[Playlist.Duo][Stat.WinRatio].ValueDec;
                    var duokpm = response.Stats[Playlist.Duo][Stat.KillsPerMatch].ValueDec;
                    var duotrnrating = response.Stats[Playlist.Duo][Stat.TrnRating].Value;

                    var psnduo = Helpers.CreateEmbed(Context, "**Duo**\n\nScore: " + duoscore + "\nScore Per Match: " + duospm + "\nK/D: " + duokd + "\nW/R: " + duowr + "\nMatches: " + duomatches + "\nKills: " + duokills + "\nKills Per Match: " + duokpm + "\nTRN Rating: " + duotrnrating);
                    psnduo.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, psnduo);
                    //squad
                    var Squadkills = response.Stats[Playlist.Squad][Stat.Kills].ValueInt;
                    var Squadscore = response.Stats[Playlist.Squad][Stat.Score].ValueInt;
                    var Squadspm = response.Stats[Playlist.Squad][Stat.ScorePerMatch].ValueDec;
                    var Squadkd = response.Stats[Playlist.Squad][Stat.KillDeathRatio].ValueDec;
                    var Squadmatches = response.Stats[Playlist.Squad][Stat.Matches].ValueInt;
                    var Squadwr = response.Stats[Playlist.Squad][Stat.WinRatio].ValueDec;
                    var Squadkpm = response.Stats[Playlist.Squad][Stat.KillsPerMatch].ValueDec;
                    var Squadtrnrating = response.Stats[Playlist.Squad][Stat.TrnRating].Value;

                    var psnSquad = Helpers.CreateEmbed(Context, "**Squad**\n\nScore: " + Squadscore + "\nScore Per Match: " + Squadspm + "\nK/D: " + Squadkd + "\nW/R: " + Squadwr + "\nMatches: " + Squadmatches + "\nKills: " + Squadkills + "\nKills Per Match: " + Squadkpm + "\nTRN Rating: " + Squadtrnrating);
                    psnSquad.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, psnSquad);

                }
                else if (type == "xbl" || type == "Xbl")
                {
                    var response = await client.FindPlayerAsync(Platform.Xbl, name);
                    //solo
                    var solokills = response.Stats[Playlist.Solo][Stat.Kills].ValueInt;
                    var soloscore = response.Stats[Playlist.Solo][Stat.Score].ValueInt;
                    var solospm = response.Stats[Playlist.Solo][Stat.ScorePerMatch].ValueDec;
                    var solokd = response.Stats[Playlist.Solo][Stat.KillDeathRatio].ValueDec;
                    var solomatches = response.Stats[Playlist.Solo][Stat.Matches].ValueInt;
                    var solowr = response.Stats[Playlist.Solo][Stat.WinRatio].ValueDec;
                    var solokpm = response.Stats[Playlist.Solo][Stat.KillsPerMatch].ValueDec;
                    var solotrnrating = response.Stats[Playlist.Solo][Stat.TrnRating].Value;

                    var xblsolo = Helpers.CreateEmbed(Context, "**Solo**\n\nScore: " + soloscore + "\nScore Per Match: " + solospm + "\nK/D: " + solokd + "\nW/R: " + solowr + "\nMatches: " + solomatches + "\nKills: " + solokills + "\nKills Per Match: " + solokpm + "\nTRN Rating: " + solotrnrating);
                    xblsolo.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, xblsolo);
                    //duo
                    var duokills = response.Stats[Playlist.Duo][Stat.Kills].ValueInt;
                    var duoscore = response.Stats[Playlist.Duo][Stat.Score].ValueInt;
                    var duospm = response.Stats[Playlist.Duo][Stat.ScorePerMatch].ValueDec;
                    var duokd = response.Stats[Playlist.Duo][Stat.KillDeathRatio].ValueDec;
                    var duomatches = response.Stats[Playlist.Duo][Stat.Matches].ValueInt;
                    var duowr = response.Stats[Playlist.Duo][Stat.WinRatio].ValueDec;
                    var duokpm = response.Stats[Playlist.Duo][Stat.KillsPerMatch].ValueDec;
                    var duotrnrating = response.Stats[Playlist.Duo][Stat.TrnRating].Value;

                    var xblduo = Helpers.CreateEmbed(Context, "**Duo**\n\nScore: " + duoscore + "\nScore Per Match: " + duospm + "\nK/D: " + duokd + "\nW/R: " + duowr + "\nMatches: " + duomatches + "\nKills: " + duokills + "\nKills Per Match: " + duokpm + "\nTRN Rating: " + duotrnrating);
                    xblduo.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, xblduo);
                    //squad
                    var Squadkills = response.Stats[Playlist.Squad][Stat.Kills].ValueInt;
                    var Squadscore = response.Stats[Playlist.Squad][Stat.Score].ValueInt;
                    var Squadspm = response.Stats[Playlist.Squad][Stat.ScorePerMatch].ValueDec;
                    var Squadkd = response.Stats[Playlist.Squad][Stat.KillDeathRatio].ValueDec;
                    var Squadmatches = response.Stats[Playlist.Squad][Stat.Matches].ValueInt;
                    var Squadwr = response.Stats[Playlist.Squad][Stat.WinRatio].ValueDec;
                    var Squadkpm = response.Stats[Playlist.Squad][Stat.KillsPerMatch].ValueDec;
                    var Squadtrnrating = response.Stats[Playlist.Squad][Stat.TrnRating].Value;

                    var xblSquad = Helpers.CreateEmbed(Context, "**Squad**\n\nScore: " + Squadscore + "\nScore Per Match: " + Squadspm + "\nK/D: " + Squadkd + "\nW/R: " + Squadwr + "\nMatches: " + Squadmatches + "\nKills: " + Squadkills + "\nKills Per Match: " + Squadkpm + "\nTRN Rating: " + Squadtrnrating);

                    xblSquad.WithThumbnailUrl("https://png.icons8.com/color/1600/fortnite.png");
                    await Helpers.SendMessage(Context, xblSquad);
                }
                else
                {
                    //error message
                }
            }catch(Exception ex)
            {
                await ReplyAsync(ex.ToString());
            }


        }
    }

【问题讨论】:

    标签: c# discord.net


    【解决方案1】:

    没有深入研究特定于 API 的问题,但是,如果您的消息太长,则将其拆分并发送多条消息。

    您的消息中似乎包含 3 个部分:soloduosquad,每个部分发送一条消息。

    如果这还不够,那么请抓取您的最终消息 string 的部分内容,最好在标点符号/空格处拆分和/或添加省略号,以便您的消息对阅读它们的用户来说看起来不错。

    【讨论】:

      【解决方案2】:

      撇开凌乱的代码不谈,您正试图在您的一个嵌入中的一个字段中发送包含太多字符的消息。 从您提供的代码中,我们看不出哪个字段太长。

      在您的情况下,如果消息超过 2000 个字符,我将编辑您的 Helpers 类以自动将消息拆分为多个字段。希望这对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        • 2019-09-26
        • 1970-01-01
        • 2017-06-09
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多