Я пытаюсь заставить своего бота время от времени менять свой игровой статус.
Вот что я пробовал: сделать это командой, которая работает, но я не могу ее использовать из-за того, что команда всегда выполняется из-за цикла, из-за которого другие команды не могут быть запущены.
[Command("randomplaying")]
[RequireUserPermission(GuildPermission.MentionEveryone)]
private async Task randomPlaying()
{
const int delay = 3000;
Random rand = new Random();
string[] serverActivity = File.ReadAllLines(Server.GameActivity.servergameactivitypath);
for (; ; )
{
int randomIndex = rand.Next(serverActivity.Length);
string gameActityText = serverActivity[randomIndex];
await Task.Delay(delay);
await Context.Client.SetGameAsync(gameActityText, "", ActivityType.Playing);
}
}
Попытка сделать это внутри Program.cs
private async Task randomPlaying()
{
const int delay = 3000;
Random rand = new Random();
string[] serverActivity = File.ReadAllLines(Commands.Server.GameActivity.servergameactivitypath);
for (; ; )
{
int randomIndex = rand.Next(serverActivity.Length);
string gameActityText = serverActivity[randomIndex];
await Task.Delay(delay);
await Context.Client.SetGameAsync(gameActityText, "", ActivityType.Playing);
}
}
И называя это с
await randomPlaying();
Этот метод ничего не делает и даже не показывает свою работу.
код servergameactivitypath
public static string servergameactivitypath = AppDomain.CurrentDomain.BaseDirectory + "/config/gameactivity.txt";
public static void createGameActivityTXT()
{
File.WriteAllText(servergameactivitypath, "Hello There\nTest1\nTest2\nTest3");
}
}