问题描述
这可能也不是做到这一点的方法,但是如果不是这样,我就找不到合适的方法。无论如何,这是我的代码:
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 idle_since)
at theorangeguy.Program.<MainAsync>d__7.MoveNext() in C:\1notrllysure\coding\theorangeguy\C#\theorangeguy\theorangeguy\Program.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 放在那里,所以只有我可以运行命令。如果机器人的规模更大,我建议不要像那样更改名称。 (另外提醒一下,您只能设置它正在玩的游戏,而不是自定义状态。)