#ifndef CMD_UPTIME_H #define CMD_UPTIME_H #include "zynk.h" /* * cmd_uptime - Handle the "!uptime" command. * * Reports how long the bot has been running since it started. Formats * the uptime as days/hours/minutes/seconds as appropriate. Rate-limited. * * Parameters: * s - The IRC session. * msg - The raw message text. * reply_target - Channel or nick to reply to. * src_nick - The nick of the user who sent the command. * * Returns: 1 if matched, 0 otherwise. */ int cmd_uptime(Session *s, const char *msg, const char *reply_target, const char *src_nick) { if (strncmp(msg, "!uptime", 7) != 0) return 0; if (msg[7] != ' ' && msg[7] != '\0') return 0; if (rate_limit_check(src_nick, reply_target, current_userhost) < 0) return 1; time_t diff = time(NULL) - start_time; long days = diff / 86400; long hours = (diff % 86400) / 3600; long mins = (diff % 3600) / 60; long secs = diff % 60; char buf[128]; if (days > 0) snprintf(buf, sizeof buf, "up %ldd %ldh %ldm %lds", days, hours, mins, secs); else if (hours > 0) snprintf(buf, sizeof buf, "up %ldh %ldm %lds", hours, mins, secs); else if (mins > 0) snprintf(buf, sizeof buf, "up %ldm %lds", mins, secs); else snprintf(buf, sizeof buf, "up %lds", secs); irc_reply(s, reply_target, src_nick, buf); log_stamp(); fprintf(stderr, CLR_YELLOW "UPTIME from %s in %s" CLR_RESET "\n", src_nick, reply_target); return 1; } #endif