summaryrefslogtreecommitdiffstats
path: root/modules/tell.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/tell.py')
-rwxr-xr-xmodules/tell.py250
1 files changed, 125 insertions, 125 deletions
diff --git a/modules/tell.py b/modules/tell.py
index a82fad1..f230c06 100755
--- a/modules/tell.py
+++ b/modules/tell.py
@@ -23,136 +23,136 @@ lispchannels = frozenset([ '#lisp', '#scheme', '#opendarwin', '#macdev',
'#perl6', '#sdlperl', '#ksvg', '#rcirc', '#code4lib', '#linux-quebec',
'#programmering', '#maxima', '#robin', '##concurrency', '#paredit' ])
-def loadReminders(fn):
- result = {}
- f = open(fn)
- for line in f:
- line = line.strip()
- if line:
- try: tellee, teller, verb, timenow, msg = line.split('\t', 4)
- except ValueError: continue # @@ hmm
- result.setdefault(tellee, []).append((teller, verb, timenow, msg))
- f.close()
- return result
-
-def dumpReminders(fn, data):
- f = open(fn, 'w')
- for tellee in data.iterkeys():
- for remindon in data[tellee]:
- line = '\t'.join((tellee,) + remindon)
- try: f.write(line + '\n')
- except IOError: break
- try: f.close()
- except IOError: pass
- return True
-
-def setup(self):
- fn = self.nick + '-' + self.config.host + '.tell.db'
- self.tell_filename = os.path.join(os.path.expanduser('~/.phenny'), fn)
- if not os.path.exists(self.tell_filename):
- try: f = open(self.tell_filename, 'w')
- except OSError: pass
- else:
- f.write('')
- f.close()
- self.reminders = loadReminders(self.tell_filename) # @@ tell
-
-def f_remind(phenny, input):
- teller = input.nick
-
- # @@ Multiple comma-separated tellees? Cf. Terje, #swhack, 2006-04-15
- verb, tellee, msg = input.groups()
- verb = verb.encode('utf-8')
- tellee = tellee.encode('utf-8')
- msg = msg.encode('utf-8')
-
- tellee_original = tellee.rstrip('.,:;')
- tellee = tellee_original.lower()
-
- if not os.path.exists(phenny.tell_filename):
- return
-
- if len(tellee) > 20:
- return phenny.reply('That nickname is too long.')
-
- timenow = time.strftime('%d %b %H:%MZ', time.gmtime())
- if not tellee in (teller.lower(), phenny.nick, 'me'): # @@
- # @@ <deltab> and year, if necessary
- warn = False
- if not phenny.reminders.has_key(tellee):
- phenny.reminders[tellee] = [(teller, verb, timenow, msg)]
- else:
- # if len(phenny.reminders[tellee]) >= maximum:
- # warn = True
- phenny.reminders[tellee].append((teller, verb, timenow, msg))
- # @@ Stephanie's augmentation
- response = "I'll pass that on when %s is around." % tellee_original
- # if warn: response += (" I'll have to use a pastebin, though, so " +
- # "your message may get lost.")
-
- rand = random.random()
- if rand > 0.9999: response = "yeah, yeah"
- elif rand > 0.999: response = "yeah, sure, whatever"
-
- phenny.reply(response)
- elif teller.lower() == tellee:
- phenny.say('You can %s yourself that.' % verb)
- else: phenny.say("Hey, I'm not as stupid as Monty you know!")
-
- dumpReminders(phenny.tell_filename, phenny.reminders) # @@ tell
+def loadReminders(fn):
+ result = {}
+ f = open(fn)
+ for line in f:
+ line = line.strip()
+ if line:
+ try: tellee, teller, verb, timenow, msg = line.split('\t', 4)
+ except ValueError: continue # @@ hmm
+ result.setdefault(tellee, []).append((teller, verb, timenow, msg))
+ f.close()
+ return result
+
+def dumpReminders(fn, data):
+ f = open(fn, 'w')
+ for tellee in data.iterkeys():
+ for remindon in data[tellee]:
+ line = '\t'.join((tellee,) + remindon)
+ try: f.write(line + '\n')
+ except IOError: break
+ try: f.close()
+ except IOError: pass
+ return True
+
+def setup(self):
+ fn = self.nick + '-' + self.config.host + '.tell.db'
+ self.tell_filename = os.path.join(os.path.expanduser('~/.phenny'), fn)
+ if not os.path.exists(self.tell_filename):
+ try: f = open(self.tell_filename, 'w')
+ except OSError: pass
+ else:
+ f.write('')
+ f.close()
+ self.reminders = loadReminders(self.tell_filename) # @@ tell
+
+def f_remind(phenny, input):
+ teller = input.nick
+
+ # @@ Multiple comma-separated tellees? Cf. Terje, #swhack, 2006-04-15
+ verb, tellee, msg = input.groups()
+ verb = verb.encode('utf-8')
+ tellee = tellee.encode('utf-8')
+ msg = msg.encode('utf-8')
+
+ tellee_original = tellee.rstrip('.,:;')
+ tellee = tellee_original.lower()
+
+ if not os.path.exists(phenny.tell_filename):
+ return
+
+ if len(tellee) > 20:
+ return phenny.reply('That nickname is too long.')
+
+ timenow = time.strftime('%d %b %H:%MZ', time.gmtime())
+ if not tellee in (teller.lower(), phenny.nick, 'me'): # @@
+ # @@ <deltab> and year, if necessary
+ warn = False
+ if not phenny.reminders.has_key(tellee):
+ phenny.reminders[tellee] = [(teller, verb, timenow, msg)]
+ else:
+ # if len(phenny.reminders[tellee]) >= maximum:
+ # warn = True
+ phenny.reminders[tellee].append((teller, verb, timenow, msg))
+ # @@ Stephanie's augmentation
+ response = "I'll pass that on when %s is around." % tellee_original
+ # if warn: response += (" I'll have to use a pastebin, though, so " +
+ # "your message may get lost.")
+
+ rand = random.random()
+ if rand > 0.9999: response = "yeah, yeah"
+ elif rand > 0.999: response = "yeah, sure, whatever"
+
+ phenny.reply(response)
+ elif teller.lower() == tellee:
+ phenny.say('You can %s yourself that.' % verb)
+ else: phenny.say("Hey, I'm not as stupid as Monty you know!")
+
+ dumpReminders(phenny.tell_filename, phenny.reminders) # @@ tell
f_remind.rule = ('$nick', ['tell', 'ask'], r'(\S+) (.*)')
-def getReminders(phenny, channel, key, tellee):
- lines = []
- template = "%s: %s <%s> %s %s %s"
- today = time.strftime('%d %b', time.gmtime())
-
- for (teller, verb, datetime, msg) in phenny.reminders[key]:
- if datetime.startswith(today):
- datetime = datetime[len(today)+1:]
- lines.append(template % (tellee, datetime, teller, verb, tellee, msg))
-
- try: del phenny.reminders[key]
- except KeyError: phenny.msg(channel, 'Er...')
- return lines
-
-def message(phenny, input):
- if not input.sender.startswith('#'): return
-
- tellee = input.nick
- channel = input.sender
-
- if not os: return
- if not os.path.exists(phenny.tell_filename):
- return
-
- reminders = []
- remkeys = list(reversed(sorted(phenny.reminders.keys())))
- for remkey in remkeys:
- if not remkey.endswith('*') or remkey.endswith(':'):
- if tellee.lower() == remkey:
+def getReminders(phenny, channel, key, tellee):
+ lines = []
+ template = "%s: %s <%s> %s %s %s"
+ today = time.strftime('%d %b', time.gmtime())
+
+ for (teller, verb, datetime, msg) in phenny.reminders[key]:
+ if datetime.startswith(today):
+ datetime = datetime[len(today)+1:]
+ lines.append(template % (tellee, datetime, teller, verb, tellee, msg))
+
+ try: del phenny.reminders[key]
+ except KeyError: phenny.msg(channel, 'Er...')
+ return lines
+
+def message(phenny, input):
+ if not input.sender.startswith('#'): return
+
+ tellee = input.nick
+ channel = input.sender
+
+ if not os: return
+ if not os.path.exists(phenny.tell_filename):
+ return
+
+ reminders = []
+ remkeys = list(reversed(sorted(phenny.reminders.keys())))
+ for remkey in remkeys:
+ if not remkey.endswith('*') or remkey.endswith(':'):
+ if tellee.lower() == remkey:
+ phenny.sending.acquire()
+ reminders.extend(getReminders(phenny, channel, remkey, tellee))
+ phenny.sending.release()
+ elif tellee.lower().strip("0123456789_-[]`") == remkey.rstrip('*:'):
phenny.sending.acquire()
reminders.extend(getReminders(phenny, channel, remkey, tellee))
phenny.sending.release()
- elif tellee.lower().strip("0123456789_-[]`") == remkey.rstrip('*:'):
- phenny.sending.acquire()
- reminders.extend(getReminders(phenny, channel, remkey, tellee))
- phenny.sending.release()
-
- for line in reminders[:maximum]:
- phenny.say(line)
-
- if reminders[maximum:]:
- phenny.say('Further messages sent privately')
- for line in reminders[maximum:]:
- phenny.msg(tellee, line)
-
- if len(phenny.reminders.keys()) != remkeys:
- phenny.sending.acquire()
- dumpReminders(phenny.tell_filename, phenny.reminders) # @@ tell
- phenny.sending.release()
+
+ for line in reminders[:maximum]:
+ phenny.say(line)
+
+ if reminders[maximum:]:
+ phenny.say('Further messages sent privately')
+ for line in reminders[maximum:]:
+ phenny.msg(tellee, line)
+
+ if len(phenny.reminders.keys()) != remkeys:
+ phenny.sending.acquire()
+ dumpReminders(phenny.tell_filename, phenny.reminders) # @@ tell
+ phenny.sending.release()
message.rule = r'(.*)'
message.priority = 'low'
-if __name__ == '__main__':
- print __doc__.strip()
+if __name__ == '__main__':
+ print __doc__.strip()