commit 832fa6adc565db3643c420a22546e0740b3b9b47
parent 94b54874275494fea2cf863f86b45a7ecf758801
Author: Dominik Schmidt <das1993@hotmail.com>
Date: Wed, 13 Sep 2017 20:03:00 +0200
Track the last received update on both sides.
Diffstat:
1 file changed, 33 insertions(+), 0 deletions(-)
diff --git a/src/telegram.d b/src/telegram.d
@@ -13,6 +13,7 @@ import std.typecons;
import std.string;
import std.json;
import std.exception;
+import std.datetime :SysTime,Clock;
import deimos.ev;
class TelegramErrnoException : ErrnoException{
@@ -386,6 +387,28 @@ struct Bot{
string[long] telegram_channels;
+ struct LastUpdate{
+ SysTime Telegram,IRC;
+ void updateTelegram(){
+ Telegram=Clock.currTime();
+ }
+ void updateIRC(){
+ IRC=Clock.currTime();
+ }
+ string toString(string separator=", "){
+ auto now=Clock.currTime;
+ string str=format!(
+ "Last Update received from IRC: %s UTC, that is %s ago%s"~
+ "Last update received from Telegram: %s UTC, that is %s ago"
+ )(IRC.toUTC.toString(), (now-IRC).toString,
+ separator,
+ Telegram.toUTC.toString, (now-Telegram).toString);
+ return str;
+ }
+ }
+
+ LastUpdate lastUpdate;
+
this(string tgramApiKey){
telegram=Telegram("253031348:AAGn4dHCPwFDSN4Bmt4ZWc3bIAmARmzsf9k");
}
@@ -428,6 +451,9 @@ struct Bot{
case "list_telegram":
ircClient.send(tt, telegram_channels.byPair.map!(a=>a[1]~"("~a[0].to!string~")").join(", "));
break;
+ case "lastUpdate":
+ ircClient.send(tt, lastUpdate.toString(", "));
+ break;
default:
ircClient.send(tt, "Unknown command");
break;
@@ -479,6 +505,9 @@ struct Bot{
unlink(split[2], chatid);
ircClient.notice(split[2], "Unlinked with "~chatid.to!string);
break;
+ case "lastUpdate":
+ telegram.send(chatid, lastUpdate.toString("\n"));
+ break;
default:
//telegram.send(chatid, split[0]~": Unknown command");
break;
@@ -533,6 +562,8 @@ struct Bot{
w_irc=Watcher(ircSocket,(revents){
trace("IRC Update");
+ lastUpdate.updateIRC();
+
if(ircClient.read()){
ev_io_stop(eventloop, &w_irc.io);
}
@@ -540,6 +571,8 @@ struct Bot{
w_tele=Watcher(telegram.sock,(revents){
trace("Telegram Update");
+ lastUpdate.updateTelegram();
+
Exception e;
bool res;
try res=telegram.read();