Improved !chrono feature.

This commit is contained in:
Christian P. MOMON 2021-04-16 14:50:03 +02:00
parent c469fd5c7b
commit 47fd4b58e8
7 changed files with 98 additions and 32 deletions

View File

@ -29,6 +29,7 @@ import org.apache.commons.lang3.StringUtils;
import org.april.hebdobot.HebdobotException; import org.april.hebdobot.HebdobotException;
import org.april.hebdobot.bot.hooks.BadCommandHook; import org.april.hebdobot.bot.hooks.BadCommandHook;
import org.april.hebdobot.bot.hooks.CancelPreviousInputHook; import org.april.hebdobot.bot.hooks.CancelPreviousInputHook;
import org.april.hebdobot.bot.hooks.ChronoHook;
import org.april.hebdobot.bot.hooks.CollectiveSubjectHook; import org.april.hebdobot.bot.hooks.CollectiveSubjectHook;
import org.april.hebdobot.bot.hooks.CommentHook; import org.april.hebdobot.bot.hooks.CommentHook;
import org.april.hebdobot.bot.hooks.CurrentHook; import org.april.hebdobot.bot.hooks.CurrentHook;
@ -48,7 +49,6 @@ import org.april.hebdobot.bot.hooks.StatsHook;
import org.april.hebdobot.bot.hooks.StatusHook; import org.april.hebdobot.bot.hooks.StatusHook;
import org.april.hebdobot.bot.hooks.StopReviewHook; import org.april.hebdobot.bot.hooks.StopReviewHook;
import org.april.hebdobot.bot.hooks.ThanksHook; import org.april.hebdobot.bot.hooks.ThanksHook;
import org.april.hebdobot.bot.hooks.TimekeeperHook;
import org.april.hebdobot.bot.hooks.VersionHook; import org.april.hebdobot.bot.hooks.VersionHook;
import org.april.hebdobot.bot.review.Message; import org.april.hebdobot.bot.review.Message;
import org.april.hebdobot.bot.review.Review; import org.april.hebdobot.bot.review.Review;
@ -58,7 +58,7 @@ import org.april.hebdobot.identica.IdenticaSettings;
import org.april.hebdobot.privatebin.PrivatebinSettings; import org.april.hebdobot.privatebin.PrivatebinSettings;
import org.april.hebdobot.twitter.TwitterClient; import org.april.hebdobot.twitter.TwitterClient;
import org.april.hebdobot.twitter.TwitterSettings; import org.april.hebdobot.twitter.TwitterSettings;
import org.april.hebdobot.util.Timekeeper; import org.april.hebdobot.util.Chrono;
import org.jibble.pircbot.IrcException; import org.jibble.pircbot.IrcException;
import org.jibble.pircbot.NickAlreadyInUseException; import org.jibble.pircbot.NickAlreadyInUseException;
import org.jibble.pircbot.PircBot; import org.jibble.pircbot.PircBot;
@ -85,7 +85,7 @@ public class Hebdobot extends PircBot
private String reviewFileSuffix; private String reviewFileSuffix;
private LocalTime reviewWaitTime; private LocalTime reviewWaitTime;
private Review review; private Review review;
private Timekeeper timekeeper; private Chrono chrono;
private IdenticaSettings identicaSettings; private IdenticaSettings identicaSettings;
private PrivatebinSettings privatebinSettings; private PrivatebinSettings privatebinSettings;
private TwitterSettings twitterSettings; private TwitterSettings twitterSettings;
@ -128,7 +128,7 @@ public class Hebdobot extends PircBot
this.reviewFileSuffix = null; this.reviewFileSuffix = null;
this.reviewWaitTime = null; this.reviewWaitTime = null;
this.review = null; this.review = null;
this.timekeeper = new Timekeeper(); this.chrono = new Chrono();
this.identicaSettings = new IdenticaSettings(); this.identicaSettings = new IdenticaSettings();
this.privatebinSettings = new PrivatebinSettings(); this.privatebinSettings = new PrivatebinSettings();
@ -155,7 +155,7 @@ public class Hebdobot extends PircBot
this.hooker.add(new StatusHook()); this.hooker.add(new StatusHook());
this.hooker.add(new CancelPreviousInputHook()); this.hooker.add(new CancelPreviousInputHook());
this.hooker.add(new TimekeeperHook()); this.hooker.add(new ChronoHook());
this.hooker.add(new DateHook()); this.hooker.add(new DateHook());
this.hooker.add(new HelloHook()); this.hooker.add(new HelloHook());
this.hooker.add(new LicenseHook()); this.hooker.add(new LicenseHook());
@ -197,6 +197,15 @@ public class Hebdobot extends PircBot
this.dispose(); this.dispose();
} }
/**
* End review.
*/
public void endReview()
{
this.review.endReview();
this.chrono.reset();
}
/** /**
* Gets the aliases. * Gets the aliases.
* *
@ -207,6 +216,11 @@ public class Hebdobot extends PircBot
return this.aliases; return this.aliases;
} }
public Chrono getChrono()
{
return this.chrono;
}
public CronManager getCronManager() public CronManager getCronManager()
{ {
return this.cronManager; return this.cronManager;
@ -272,11 +286,6 @@ public class Hebdobot extends PircBot
return this.reviewWaitTime; return this.reviewWaitTime;
} }
public Timekeeper getTimekeeper()
{
return this.timekeeper;
}
/** /**
* Gets the twitter settings. * Gets the twitter settings.
* *
@ -486,6 +495,28 @@ public class Hebdobot extends PircBot
logger.info("Bot ready."); logger.info("Bot ready.");
} }
/**
* Send chrono message.
*/
public void sendChronoMessage()
{
if (this.review == null)
{
sendMessage("%% durée du point ; pas de revue en cours.");
}
else if (this.review.isEmpty())
{
sendMessage("%% durée du point ; pas de point en cours.");
}
else
{
String topicTitle = this.review.getCurrentTopic().getTitle();
String chronoValue = this.chrono.toString();
sendMessage(String.format("%% durée du point %s : %s", topicTitle, chronoValue));
}
}
/** /**
* Send message. * Send message.
* *
@ -532,4 +563,13 @@ public class Hebdobot extends PircBot
{ {
this.reviewWaitTime = reviewWaitTime; this.reviewWaitTime = reviewWaitTime;
} }
/**
* Stop review.
*/
public void stopReview()
{
setReview(null);
this.chrono.reset();
}
} }

View File

@ -24,11 +24,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
/** /**
* The Class TimekeeperHook. * The Class ChronoHook.
*/ */
public class TimekeeperHook extends Hook public class ChronoHook extends Hook
{ {
private static final Logger logger = LoggerFactory.getLogger(TimekeeperHook.class); private static final Logger logger = LoggerFactory.getLogger(ChronoHook.class);
/* (non-Javadoc) /* (non-Javadoc)
* @see org.april.hebdobot.bot.hooks.Hook#attemptProcess(org.april.hebdobot.bot.Hebdobot, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) * @see org.april.hebdobot.bot.hooks.Hook#attemptProcess(org.april.hebdobot.bot.Hebdobot, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
@ -39,10 +39,11 @@ public class TimekeeperHook extends Hook
{ {
boolean result; boolean result;
if (StringUtils.equalsAnyIgnoreCase(message, "!timekeeper", "!chrono")) if (StringUtils.equalsAnyIgnoreCase(message, "!chrono"))
{ {
logger.info("!chrono caught."); logger.info("!chrono caught.");
bot.sendMessage(bot.getTimekeeper().format()); bot.sendChronoMessage();
// bot.sendMessage(bot.getChrono().format());
result = true; result = true;
} }

View File

@ -1,5 +1,5 @@
/** /**
* Copyright (C) 2018 Christian Pierre MOMON <cmomon@april.org> * Copyright (C) 2018-2021 Christian Pierre MOMON <cmomon@april.org>
* *
* This file is part of (April) Hebdobot. * This file is part of (April) Hebdobot.
* *
@ -52,16 +52,17 @@ public class CollectiveSubjectHook extends Hook
CollectiveTopic topic = new CollectiveTopic(message.replaceFirst("##", "").trim()); CollectiveTopic topic = new CollectiveTopic(message.replaceFirst("##", "").trim());
if (!bot.getReview().isEmpty()) if (!bot.getReview().isEmpty())
{ {
bot.sendChronoMessage();
String participants = StringUtils.join(bot.getReview().getParticipants(), " "); String participants = StringUtils.join(bot.getReview().getParticipants(), " ");
bot.sendMessage(String.format("%% %s %s, on va passer à la suite : %s", bot.getTimekeeper().format(), participants, bot.sendMessage(String.format("%% %s, on va passer à la suite : %s", participants, topic.getTitle()));
topic.getTitle()));
} }
bot.getReview().begin(topic); bot.getReview().begin(topic);
bot.sendMessage("Sujet collectif : " + topic.getTitle()); bot.sendMessage("Sujet collectif : " + topic.getTitle());
bot.sendMessage("% 1 minute max"); bot.sendMessage("% 1 minute max");
bot.sendMessage("% si rien à signaler vous pouvez écrire % ras"); bot.sendMessage("% si rien à signaler vous pouvez écrire % ras");
bot.sendMessage("% quand vous avez fini vous le dites par % fini"); bot.sendMessage("% quand vous avez fini vous le dites par % fini");
bot.getTimekeeper().start(); bot.getChrono().start();
} }
else else
{ {

View File

@ -80,9 +80,8 @@ public class FinishReviewHook extends Hook
else else
{ {
// End the review. // End the review.
bot.getReview().endReview(); bot.sendChronoMessage();
bot.endReview();
bot.sendMessage("%% +%01d:%02d", bot.getTimekeeper().format());
// Load and update review statistics. // Load and update review statistics.
ReviewDatas datas; ReviewDatas datas;

View File

@ -1,5 +1,5 @@
/** /**
* Copyright (C) 2018 Christian Pierre MOMON <cmomon@april.org> * Copyright (C) 2018-2021 Christian Pierre MOMON <cmomon@april.org>
* *
* This file is part of (April) Hebdobot. * This file is part of (April) Hebdobot.
* *
@ -52,15 +52,16 @@ public class IndividualSubjectHook extends Hook
IndividualTopic topic = new IndividualTopic(message.replaceFirst("#", "").trim()); IndividualTopic topic = new IndividualTopic(message.replaceFirst("#", "").trim());
if (!bot.getReview().isEmpty()) if (!bot.getReview().isEmpty())
{ {
bot.sendChronoMessage();
String participants = StringUtils.join(bot.getReview().getParticipants(), " "); String participants = StringUtils.join(bot.getReview().getParticipants(), " ");
bot.sendMessage(String.format("%% %s %s, on va passer à la suite : %s", bot.getTimekeeper().format(), participants, bot.sendMessage(String.format("%% %s, on va passer à la suite : %s", participants, topic.getTitle()));
topic.getTitle()));
} }
bot.getReview().begin(topic); bot.getReview().begin(topic);
bot.sendMessage("Sujet individuel : " + topic.getTitle()); bot.sendMessage("Sujet individuel : " + topic.getTitle());
bot.sendMessage("% si rien à signaler vous pouvez écrire % ras"); bot.sendMessage("% si rien à signaler vous pouvez écrire % ras");
bot.sendMessage("% quand vous avez fini vous le dites par % fini"); bot.sendMessage("% quand vous avez fini vous le dites par % fini");
bot.getTimekeeper().start(); bot.getChrono().start();
} }
else else
{ {

View File

@ -1,5 +1,5 @@
/** /**
* Copyright (C) 2018-2019 Christian Pierre MOMON <cmomon@april.org> * Copyright (C) 2018-2021 Christian Pierre MOMON <cmomon@april.org>
* *
* This file is part of (April) Hebdobot. * This file is part of (April) Hebdobot.
* *
@ -55,7 +55,7 @@ public class StopReviewHook extends Hook
else else
{ {
bot.sendMessage("Abandon de la revue en cours."); bot.sendMessage("Abandon de la revue en cours.");
bot.setReview(null); bot.stopReview();
} }
result = true; result = true;

View File

@ -22,18 +22,18 @@ import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
* The Class TimeKeeper. * The Class Chrono.
*/ */
public class Timekeeper public class Chrono
{ {
private LocalDateTime start; private LocalDateTime start;
/** /**
* Instantiates a new time keeper. * Instantiates a new time keeper.
*/ */
public Timekeeper() public Chrono()
{ {
this.start = null; reset();
} }
/** /**
@ -61,6 +61,14 @@ public class Timekeeper
return result; return result;
} }
/**
* Reset.
*/
public void reset()
{
this.start = null;
}
/** /**
* Start. * Start.
*/ */
@ -68,4 +76,20 @@ public class Timekeeper
{ {
this.start = LocalDateTime.now(); this.start = LocalDateTime.now();
} }
/**
* To string.
*
* @return the string
*/
@Override
public String toString()
{
String result;
result = format();
//
return result;
}
} }