我正在尝试使用 D#+ 设置 Discord 机器人的状态,但它每次都会给我一个空引用异常



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

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:1notrllysurecodingtheorangeguyC#theorangeguytheorangeguyProgram.cs:line 101

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

有点晚了,但答案是:

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

[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放在那里,这样只有我才能运行命令。如果机器人的规模更大,我建议不要这样更改名称。(此外,作为提醒,您只能设置它正在玩的游戏,而不能设置自定义状态。(

最新更新