Fix bot status disappearing after some time
This commit is contained in:
parent
e7377cdece
commit
6c20d6fa64
3 changed files with 26 additions and 8 deletions
|
@ -131,5 +131,6 @@ public class AdminCommands
|
||||||
|
|
||||||
Logger.Log("Reloading bot...");
|
Logger.Log("Reloading bot...");
|
||||||
SupportChild.Reload();
|
SupportChild.Reload();
|
||||||
|
SupportChild.RefreshBotActivity();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -24,14 +24,7 @@ public static class EventHandler
|
||||||
{
|
{
|
||||||
Logger.Log("Connected to Discord.");
|
Logger.Log("Connected to Discord.");
|
||||||
|
|
||||||
// Checking activity type
|
SupportChild.RefreshBotActivity();
|
||||||
if (!Enum.TryParse(Config.presenceType, true, out DiscordActivityType activityType))
|
|
||||||
{
|
|
||||||
Logger.Log("Presence type '" + Config.presenceType + "' invalid, using 'Playing' instead.");
|
|
||||||
activityType = DiscordActivityType.Playing;
|
|
||||||
}
|
|
||||||
|
|
||||||
client.UpdateStatusAsync(new DiscordActivity(Config.presenceText, activityType), DiscordUserStatus.Online);
|
|
||||||
hasLoggedGuilds = true;
|
hasLoggedGuilds = true;
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ using Microsoft.Extensions.Logging;
|
||||||
using SupportChild.Commands;
|
using SupportChild.Commands;
|
||||||
using CommandLine;
|
using CommandLine;
|
||||||
using DSharpPlus.Commands.Processors.SlashCommands;
|
using DSharpPlus.Commands.Processors.SlashCommands;
|
||||||
|
using DSharpPlus.Entities;
|
||||||
using DSharpPlus.Exceptions;
|
using DSharpPlus.Exceptions;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
@ -22,6 +23,9 @@ namespace SupportChild;
|
||||||
internal static class SupportChild
|
internal static class SupportChild
|
||||||
{
|
{
|
||||||
internal static DiscordClient client = null;
|
internal static DiscordClient client = null;
|
||||||
|
|
||||||
|
private static Timer statusUpdateTimer;
|
||||||
|
|
||||||
public class CommandLineArguments
|
public class CommandLineArguments
|
||||||
{
|
{
|
||||||
[Option('c',
|
[Option('c',
|
||||||
|
@ -92,6 +96,9 @@ internal static class SupportChild
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create but don't start the timer, it will be started when the bot is connected.
|
||||||
|
statusUpdateTimer = new Timer(RefreshBotActivity, null, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan);
|
||||||
|
|
||||||
if (!await Connect())
|
if (!await Connect())
|
||||||
{
|
{
|
||||||
Logger.Fatal("Aborting startup due to a fatal error when trying to connect to Discord.");
|
Logger.Fatal("Aborting startup due to a fatal error when trying to connect to Discord.");
|
||||||
|
@ -252,6 +259,23 @@ internal static class SupportChild
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static void RefreshBotActivity(object state = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!Enum.TryParse(Config.presenceType, true, out DiscordActivityType activityType))
|
||||||
|
{
|
||||||
|
Logger.Log("Presence type '" + Config.presenceType + "' invalid, using 'Playing' instead.");
|
||||||
|
activityType = DiscordActivityType.Playing;
|
||||||
|
}
|
||||||
|
client.UpdateStatusAsync(new DiscordActivity(Config.presenceText, activityType), DiscordUserStatus.Online);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
statusUpdateTimer.Change(TimeSpan.FromMinutes(30), Timeout.InfiniteTimeSpan);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ErrorHandler : IClientErrorHandler
|
internal class ErrorHandler : IClientErrorHandler
|
||||||
|
|
Loading…
Add table
Reference in a new issue