aboutsummaryrefslogtreecommitdiff
path: root/bot.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot.py')
-rw-r--r--bot.py95
1 files changed, 0 insertions, 95 deletions
diff --git a/bot.py b/bot.py
deleted file mode 100644
index 3a5e664..0000000
--- a/bot.py
+++ /dev/null
@@ -1,95 +0,0 @@
-import time
-import threading
-import irctk
-import random
-
-class Bot(threading.Thread):
- host = 'tolkien.freenode.net'
- port = 6697
- ssl = True
- password = None
-
- def __init__(self, channel, threads, queue, name, rate, per):
- threading.Thread.__init__(self)
- self.threads = threads
- self.queue = queue
- self.name = name
- self.channel = channel
- # following for rate limiting:
- self.rate = rate
- self.per = per
- self.last_check = time.time()
- self.allowance = rate
-
- self.log('starting up')
- self.ready = False
-
- self.client = irctk.Client(nickname=name, ident=name, realname=name, password=Bot.password)
- self.client.delegate = self
- self.client.connect(Bot.host, Bot.port, use_tls=Bot.ssl)
-
- def irc_raw(self, client, line):
- try:
- self.log('IRC: ' + line)
- except:
- self.log('failed to log')
- #pass
-
- def log(self, line):
- print "{} [{}] {}".format(time.strftime('%H:%M'), self.name, line)
-
- def irc_registered(self, client):
- self.log('joining ' + self.channel)
- channel = client.add_channel(self.channel)
- channel.join()
-
- def irc_channel_join(self, client, nick, channel):
- if str(nick) == str(client.get_nickname()):
- self.log('im ready :)')
- self.ready = True
-
- def can_send(self):
- current = time.time()
- time_passed = current - self.last_check;
- self.last_check = current
- self.allowance += time_passed * (self.rate / self.per)
-
- if self.allowance > self.rate:
- self.allowance = self.rate
-
- if self.allowance > 1.0:
- self.allowance -= 1.0
- return True
-
- return False
-
- def run(self):
- self.log('run() called')
-
- while True:
- waiting = True
- while waiting:
- for thread in self.threads:
- if not thread.ready:
- waiting = True
- break
- else:
- waiting = False
-
- time.sleep(random.random())
-
- # start flushing the queue
- while self.can_send():
- try:
- line = self.queue.popleft()
- self.client.send_line(
- 'PRIVMSG ' + self.channel + ' :' + line
- )
- time.sleep(0.25)
- except IndexError:
- # end of queue
- self.log('done working')
- self.client.quit('bye bye')
- return
-
- time.sleep(0.1)