Add bot age info

This commit is contained in:
Bea 2022-12-25 02:12:39 +01:00
parent 7ac72f9e38
commit 52fe279f35
4 changed files with 21 additions and 5 deletions

View File

@ -51,6 +51,9 @@ public class Cache
// used to count e.g. uptime // used to count e.g. uptime
private static LocalDateTime startupTime = null; private static LocalDateTime startupTime = null;
// date of when the first bot commit was made (CEST time)
private static final LocalDateTime botBirthDate = LocalDateTime.of(2022, 8, 25, 21, 50);
// the scheduler that should always be used when running a scheduled task. // the scheduler that should always be used when running a scheduled task.
private final static ScheduledExecutorService taskScheduler = Executors.newSingleThreadScheduledExecutor(); // todo: try-with-resources private final static ScheduledExecutorService taskScheduler = Executors.newSingleThreadScheduledExecutor(); // todo: try-with-resources
@ -280,6 +283,13 @@ public class Cache
*/ */
public static LocalDateTime getStartupTime() { return startupTime; } public static LocalDateTime getStartupTime() { return startupTime; }
/**
* Get the time of when the bot was created.
*
* @return a LocalDateTime object of the first commit's instant.
*/
public static LocalDateTime getBotBirthDate() { return botBirthDate; }
public static String getFullHeartBeatLink() { public static String getFullHeartBeatLink() {
return configurationSource == null ? null : (String) configurationSource.getConfigValue(ConfigurationEntry.HEARTBEAT_LINK); return configurationSource == null ? null : (String) configurationSource.getConfigValue(ConfigurationEntry.HEARTBEAT_LINK);
} }

View File

@ -91,13 +91,18 @@ public class BotInfo
embedBuilder.addField("Maintainer", developerMention, true); embedBuilder.addField("Maintainer", developerMention, true);
// uptime field // uptime field
embedBuilder.addField("Uptime", FormatUtil.getNiceUptime(), true); embedBuilder.addField("Uptime", FormatUtil.getNiceTimeDiff(Cache.getStartupTime()), true);
// issue tracker field // issue tracker field
embedBuilder.addField("Support", embedBuilder.addField("Support",
"[Issue tracker](https://git.beatrice.wtf/mind-overflow/HidekoBot/issues)", "[Issue tracker](https://git.beatrice.wtf/mind-overflow/HidekoBot/issues)",
true); //todo: we should probably make this a final field in the config class true); //todo: we should probably make this a final field in the config class
// bot birthday field
embedBuilder.addField("Bot age",
Cache.getBotName() + " was created " + FormatUtil.getNiceTimeDiff(Cache.getBotBirthDate()) + "ago!",
false);
return embedBuilder.build(); return embedBuilder.build();
} }
} }

View File

@ -10,6 +10,7 @@ import wtf.beatrice.hidekobot.commands.base.BotInfo;
import wtf.beatrice.hidekobot.objects.commands.CommandCategory; import wtf.beatrice.hidekobot.objects.commands.CommandCategory;
import wtf.beatrice.hidekobot.objects.commands.MessageCommand; import wtf.beatrice.hidekobot.objects.commands.MessageCommand;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -19,7 +20,7 @@ public class BotInfoCommand implements MessageCommand
@Override @Override
public LinkedList<String> getCommandLabels() { public LinkedList<String> getCommandLabels() {
return new LinkedList<>(Collections.singletonList("botinfo")); return new LinkedList<>(Arrays.asList("botinfo", "info"));
} }
@Nullable @Nullable

View File

@ -15,10 +15,10 @@ public class FormatUtil
* *
* @return the formatter String * @return the formatter String
*/ */
public static String getNiceUptime() public static String getNiceTimeDiff(LocalDateTime start)
{ {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
long uptimeSeconds = ChronoUnit.SECONDS.between(Cache.getStartupTime(), now); long uptimeSeconds = ChronoUnit.SECONDS.between(start, now);
Duration uptime = Duration.ofSeconds(uptimeSeconds); Duration uptime = Duration.ofSeconds(uptimeSeconds);
long seconds = uptime.toSecondsPart(); long seconds = uptime.toSecondsPart();
long minutes = uptime.toMinutesPart(); long minutes = uptime.toMinutesPart();
@ -31,7 +31,7 @@ public class FormatUtil
if(hours == 0) if(hours == 0)
{ {
if(minutes == 0) if(minutes == 0)
{} else { {} else { // i know this if has an empty body but i feel like this reads better
uptimeStringBuilder.append(minutes).append("m "); uptimeStringBuilder.append(minutes).append("m ");
} }
} else { } else {