Created
June 2, 2015 20:24
-
-
Save DTSCode/5487bd9d059531c5a015 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import irc, asyncdispatch | |
import strutils | |
import times | |
proc getDaysLeft(year_s: string, today: string, holiday: string): string = | |
var table = @[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] | |
var month: int | |
var day: int | |
var dayOfTheYear: int = 0 | |
var dayOfChristmas: int = 358 | |
var year = parseInt(year_s) | |
if year mod 4 == 0 and not (year mod 100 == 0 and not year mod 400 == 0): | |
table[1] = 29 | |
dayOfChristmas = 359 | |
if today[0] == '0': month = parseInt($today[1]) - 1 | |
else: month = parseInt(today[0] & today[1]) | |
for iter in 1 .. month: dayOfTheYear += table[iter] | |
if today[2] == '0': day = parseInt($today[2]) | |
else: day = parseInt(today[2] & today[3]) | |
dayOfTheYear += day | |
var tmp = dayOfTheYear - dayOfChristmas | |
result = $tmp | |
proc onIrcEvent(client: PAsyncIrc, event: TIrcEvent) {.async.} = | |
case event.typ: | |
of EvConnected: | |
nil | |
of EvDisconnected, EvTimeout: | |
await client.reconnect() | |
of EvMsg: | |
echo(event.raw) | |
if event.cmd == MPrivMsg: | |
var msg: string = event.params[event.params.high] | |
var ti = getLocalTime(getTime()) | |
var date = format(ti, "MD") | |
var year = format(ti, "Y") | |
if toLower(msg) in @["is it christmas", "is it christmas yet", "is it christmas?", "is it christmas yet?", "christmas?", "ffs is it fucking christmas yet?!?!"]: | |
if date == "1225": | |
await privmsg(client, event.origin, "Yes, " & event.nick & ". It is Christmas.") | |
elif date == "0612": | |
await privmsg(client, event.origin, "No " & event.nick & ", but it is dtscode's birthday.") | |
else: | |
await privmsg(client, event.origin, "No, " & event.nick & ". It is not Christmas. There are " & getDaysLeft(year, date, "0612") | |
elif toLower(msg) in @["is it midsummer", "is it midsummer yet", "is it midsummer?", "is it midsummer yet?", "midsummer?"]: | |
if date == "0621": | |
await privmsg(client, event.origin, "Yes, " & event.nick & ". It is midsummer.") | |
else: | |
await privmsg(client, event.origin, "No, " & event.nick & ". It is not midsummer.") | |
var client = newAsyncIrc("irc.freenode.net", nick="IsItChristmas", user="dtsbot", joinChans = @["#cplusplus.com", "#nim-offtopic", "#osdev-offtopic", "#lpmc"], callback = onIrcEvent) | |
asyncCheck client.run() | |
runForever() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment