0

这也可能不是这样做的方法,但如果不是,我在任何地方都找不到合适的。无论如何,这是我的代码:

await discord.UpdateStatusAsync(new DiscordGame("?help")); // Line 101

这就是错误

System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=DSharpPlus
  StackTrace:
   at DSharpPlus.DiscordClient.InternalUpdateStatusAsync(DiscordGame game, Nullable`1 user_status, Nullable`1 idle_since)
   at DSharpPlus.DiscordClient.UpdateStatusAsync(DiscordGame game, Nullable`1 user_status, Nullable`1 idle_since)
   at theorangeguy.Program.<MainAsync>d__7.MoveNext() in C:\1notrllysure\coding\theorangeguy\C#\theorangeguy\theorangeguy\Program.cs:line 101

顺便说一句,如果您想知道,机器人名称对我和一些朋友来说是个笑话。

4

1 回答 1

0

有点晚了,但这是答案:

您可以简单地创建一个为您设置它的命令/类。我是这样做的:

    [Hidden]
    [Command("setactivity")]
    private async Task setactivity(CommandContext ctx)
    {
        if (ctx.User.Id == YourDiscordID)
        {
            DiscordActivity activity = new DiscordActivity();
            DiscordClient discord = ctx.Client;
            string input = Console.ReadLine();
            activity.Name = input;
            await discord.UpdateStatusAsync(activity);
            return;
        }
        else
        {
            return;
        }
    }

我只是使用 Console.ReadLine(); 在此处提示,以便我可以随时更改它。我也把我的 ID 放在那里,所以只有我可以运行命令。如果机器人适用于更大的规模,我建议让名称不能像那样更改。(另外提醒一下,您只能设置它正在玩的游戏,而不是自定义状态。)

于 2021-04-01T02:09:23.770 回答