Skip to content
This repository has been archived by the owner on Nov 3, 2018. It is now read-only.

Commit

Permalink
Autorejoin, nicer open state handling and more love.
Browse files Browse the repository at this point in the history
  • Loading branch information
jaseg committed Jun 19, 2014
1 parent 31c4bc5 commit fa18d74
Show file tree
Hide file tree
Showing 2 changed files with 285 additions and 36 deletions.
87 changes: 51 additions & 36 deletions afrab0t.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,31 @@
import sqlite3
from contextlib import contextmanager
import settings
from threading import Thread

def log(*args):
print(time.strftime('\x1B[93m[%m-%d %H:%M:%S]\x1B[0m'), *args+('\x1B[0m',))

class Afrabot(irc.bot.SingleServerIRCBot):
def __init__(self, db, channel, nickname, server, port=6667):
def __init__(self, channel, nickname, server, port=6667):
irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
self.db = db
self.channel = channel
self.nick = nickname.lower()
self.lastopen = None
self._nick = nickname.lower()
self.chaossternchen = []
self.catpiccache = []
self.reddit = praw.Reddit(user_agent='AfRAb0t/0.23 by jaseg')
self.moincount = 0
self._topic = None

def start(self):
db = sqlite3.connect('afrab0t.db')
with db as db:
db.execute("CREATE TABLE IF NOT EXISTS keylog (timestamp TIMESTAMP, fromnick TEXT, tonick TEXT, keystate TEXT, comment TEXT)")
db.execute("CREATE TABLE IF NOT EXISTS etas (timestamp TIMESTAMP, nick TEXT, eta TEXT)")
db.execute("CREATE TABLE IF NOT EXISTS open (state TEXT, timestamp TIMESTAMP PRIMARY, nick TEXT)")
db.execute("INSERT OR REPLACE INTO open VALUES ('unknown', DATETIME('now'), ?)", self.nick)
self.db = db
super(Afrabot, self).start()

def on_currenttopic(self, c, e):
if e.arguments[0] == self.channel:
Expand All @@ -43,6 +51,31 @@ def on_currenttopic(self, c, e):
else:
log('\033[91m Got a spurious topic message for '+e.arguments[0]+'\033[0m')

def love(self, nick):
with open('love.txt') as f:
lines = f.readlines()
for line in lines:
self.send(nick, line.strip())

@property
def lastopen(self):
return db.execute("SELECT * FROM open ORDER BY timestamp DESC LIMIT 1").fetchone()

def set_open(self, state, nick):
state = 'open' if state else 'closed'
self.db.execute("INSERT INTO open VALUES (?, DATETIME('now'), ?)", (state, nick))
self.sendchan('Space is '+state+'!')
self.topic = re.sub('space: (open|closed|unknown)', 'space: '+state, self.topic)

@property
def nick(self):
return self._nick

@nick.setter
def nick(self, newnick):
self._nick = newnick
self.connection.nick(newnick)

@property
def topic(self):
return self._topic
Expand Down Expand Up @@ -72,7 +105,6 @@ def regain(self):

def get_op(self, op=True):
line = ' '.join(('OP' if op else 'DEOP', self.channel, self.nick))
print(line)
self.send('ChanServ', line)
time.sleep(5.0)

Expand All @@ -98,6 +130,9 @@ def on_welcome(self, c, e):
self.send('jaseg', 'afrab0t online')
self.identify()

def on_kick(self, c, e):
self.on_welcome(c, e)

def on_privnotice(self, c, e):
log(' [ \033[96mNOTICE {}→{}\033[0m ]'.format(e.source.nick, ' '.join(e.arguments)))

Expand Down Expand Up @@ -243,48 +278,32 @@ def do_command(self, e, cmd, nick, target, reply, dm):
reply('Did you mean {} (U+{:x}) with “{}”?'.format(uchar, ord(uchar), emoticon))
break

def spacetop(state):
self.topic = re.sub('space: (open|closed)', 'space: '+state, self.topic)
def replyopen():
if self.lastopen:
reply('Space was last marked {} by {} on {}.'.format(*self.lastopen))
else:
reply("I don't know when was the last time the space was open.")
if cmd.startswith('open'):
if '?' in cmd or '‽' in cmd:
if cmd.count('?') >= 5:
self.sendchan('afrabot: open?')
return
if self.lastopen:
if self.spaceopen:
reply('Space was last marked open on '+self.lastopen)
else:
reply('Space was last marked closed on '+self.lastopen)
else:
reply("I don't know when was the last time the space was open.")
replyopen()
else:
if cmd.count('!') > 5:
reply('u mad bro?')
return
self.sendchan('Space is open!')
spacetop('open')
self.lastopen = time.ctime()
self.spaceopen = True
self.set_open(True, nick)
return
if cmd.startswith('closed'):
if '?' in cmd or '‽' in cmd:
if self.lastopen:
if self.spaceopen:
reply('Space was last marked open on '+self.lastopen)
else:
reply('Space was last marked closed on '+self.lastopen)
else:
reply("I don't know when was the last time the space was closed.")
replyopen()
else:
if cmd.count('!') > 5:
reply('u mad bro?')
return
self.sendchan('Space is closed! Please remember to follow the shutdown protocol.')
spacetop('closed')
if target != self.channel:
reply('Please remember to follow the shutdown protocol.')
self.lastopen = time.ctime()
self.spaceopen = False
dm('Please remember to follow the shutdown protocol.')
self.set_open(False)
return
if re.match('^ *genug +pleniert[.!]{,5}$', cmd) or re.match('^plenum[?!‽.]{,5}$', cmd):
cs = self.chaossternchen
Expand Down Expand Up @@ -421,11 +440,7 @@ def spacetop(state):
c.notice(nick, 'I don\'t know what you mean with "{}"'.format(cmd))

def main():
db = sqlite3.connect('afrab0t.db')
db.execute("CREATE TABLE IF NOT EXISTS keylog (timestamp TIMESTAMP, fromnick TEXT, tonick TEXT, keystate TEXT, comment TEXT)")
db.execute("CREATE TABLE IF NOT EXISTS etas (timestamp TIMESTAMP, nick TEXT, eta TEXT)")

bot = Afrabot(db, settings.CHANNEL, settings.NICK, settings.SERVER, settings.PORT)
bot = Afrabot(settings.CHANNEL, settings.NICK, settings.SERVER, settings.PORT)
bot.start()

if __name__ == "__main__":
Expand Down
234 changes: 234 additions & 0 deletions love.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
mon ko lo fon
u'm wloloho
ko kiciyoh
ek het jou lief
të dua
ich hab die lieb
afekirahalehu
n'bghick
bahebbak
أُحِبُّكَ
ni ridiki
nhebbik
Ես Քեզ սիրում եմ
moi tumak bhaal pau
ono grohamno lokh
quiérote
ki sakihitin
min bou la yé
men seni sevirem
né bi fè
mi klôa
мин хинэ яратау
maite zaitut
me gwes wè
Кахаю цябе
aami tomakey bhalo bashi
hamlagh-k
mii nan
ma kia bé nà
volim te
karout a ran ac'hanout
обичам те
nga nin ko chit te
mi lobi you
t'estimo
j't'aquiers
hu guiya hao
ho vez
gvgeyui
nemehotatse
我爱你
ai tong ngonuk
my a'th kar
ti tengu caru
мен сени севем
volim te
miluji tě
chantechiciya
jeg elsker dig
man tu ra dost darom
m'bi fê
na tondi wa
eni a hnimi eö
ik houd van jou
nga cheu lu ga
I love you
mi amas vin
ma armastan sind
me te wa ding
me lonwo
ma ding wa
ma dzing wa
eg elski teg
au lomani iko
minä rakastan sinua
'k zien je geeren
un nyi wan nu we
je t'aime
ik hâld fan dy
o ti vuei ben
mi yidima
quérote
j'sea un diot do tae
mi ko me
me shen mikvarxar
ich liebe Dich
Σ' αγαπώ
asavakkit
rojhayhû
hun tane prem karun chhun
CREOLE mwen renmen'w
ngai oi nyi
sonka
aloha wau iā ‘oe
ohevet otkha
tumse pyar karathi hun
kuv hlub koj
szeretlek
ég elska þig
a huru m gi n'anya
aku cinta padamu
asavakkit
GAELIC tá grá agam duit
ti amo
n'gné kanou
大好きです。
aku tresno marang sliramu
naanu ninnanna pritisutteney
myen syeni sooyom
srolaïgn bang
mu me zola nge
ningwendete
ami nkuswele
ndagukunda
men seni sueum
ndagukunda
i diany gnè
hav tuka mog karta
사랑해요
nga lungse kom
mi koriou
ez te hez dikim
khoi hak tchao lai
te amo
es tevi mīlu
te véuggio bén
na lingi yo
aš tave myliu
SAXON ik hou van ju
ndakhuyanza
nkwendha
ech hun dech gäer
Те сакам
tiako ianao
aku cinta padamu
enikku ninné ishtamaanu
inħobbok
ei nang-bu nung-si
ma ngal o
ta graih aym ort
e aroha ana ahau ki a koe
majha tujhyavar prem aahe
hinenao au ia oe
yokwe yok
CREOLE mo konten twa
bènan ndjala wè
mi ding wo
meng ne nkoung ô
me ko ou
un lon o
ka hmangaih che
Би чамд хайртай
mam nong-a fo
mu zola ngé
mi tonda wè
te voglio bene
niya ku tanda
ma timilai prem garchhu
j'syis anorta dè tei
jeg elsker deg
miye wawe
t'aimi
ani sin jaladha
æз дæ уарзын (æž dæ waržyn)
mi ta stima bo
ta sara meena kowm
دوستت دارم
ih mwauhkin uhk
kocham cię
eu te amo
tenu pyar kardi han
nyu rondi
munakuyki
hanga rahi au kia koe
kamaù tut
te iubesc
Я тебя люблю
ou te alofa ia te oe
mbi yé mô
deo t’amo
tha gaol agam ort
mô mi dènè
Ја те волим
mi nowinda
ke ya ho rata
anaou tiakou
ngam hwandzo
nisuhuvendza
ndinokuda
moon khay tu saan piyar aahay
mama oyata aadareyi
ľúbim ťa
ljubim te
volim te
waan ku jecelahay
aye ga banin
na moula
te quiero
ira fan ma
nakupenda
ngiyakutsandza
jag älskar dig
Ich hab dich lieb
mahal kita
ua here vau ia oe
lav dorum
naan unnai kadalikiren
мин сини яратам
ฉันรักเธอ
na kirinla gaguidou
ye fikireka eye
ofa atu
ndji mukunanga
seni seviyorum
seni söýärin
мэн сэни ынакшир
me pe wo
mon tone jaratiśko
Я тебе кохаю
mein tumse mohabbat karta hoon
tumse mohabbat karti hoon
tum se pyar heh
men seni sevaman
te vullk
t'amo
minä armastan sindai
anh yêu em (man to woman)
yêu anh (woman to man)
löbob oli
ma wou ndoune
eau manako ia koe
orthographe à betchfessîs
rydw i'n dy garu di
mwen enmen'w
damala nob
ndiyakuthanda
Мин эйиигин таптыыбын (min eyiigin taptyybyn)
gu ba'adag em
men nkon' wou
y hob ti
ich hob dir lib
ni wu rondi
moni ife e
ez tora hesken

0 comments on commit fa18d74

Please sign in to comment.