Private announcement logic.
authorCMDR furrycat <elite@furrycat.net>
Fri, 7 Oct 2016 10:26:35 +0000 (11:26 +0100)
committerCMDR furrycat <elite@furrycat.net>
Fri, 7 Oct 2016 10:26:35 +0000 (11:26 +0100)
bot.py

diff --git a/bot.py b/bot.py
index 9591b47..fc08154 100755 (executable)
--- a/bot.py
+++ b/bot.py
@@ -821,7 +821,7 @@ def show_announcement(message, id):
   else:
     server = client.get_server(announcement['server_id'])
     member = server.get_member(announcement['member_id'])
-  text = '**announcement {} by {}'.format(id, member.name)
+  text = '**{}announcement {} by {}'.format('private' if announcement['channel_id'] == 'private' else '', id, member.name)
   now = int(time.time())
   if announcement['last_spoke']:
     offset = announcement['last_spoke']
@@ -1143,7 +1143,8 @@ def announce(announcement):
 
   channel = None
   channel_id = str(announcement['channel_id'])
-  if channel_id == 'private':
+  private = channel_id == 'private'
+  if private:
     for server in client.servers:
       try:
         member = server.get_member(announcement['member_id'])
@@ -1170,14 +1171,16 @@ def announce(announcement):
       else:
         text = '<@{}>\n{}'.format(mention, text)
 
-    cutoff = datetime.datetime.utcnow() - datetime.timedelta(0, announcement['interval'])
-    logs = yield from client.logs_from(channel, after = cutoff)
-    digest = announcement['digest']
-    for message in logs:
-      raw = re.sub(r'^(<?@\S+\s)+', '', message.content).strip()
-      if hashlib.sha224(raw.encode('utf-8')).hexdigest() == digest:
-        log.debug('Saw previously posted announcement {} with digest {}'.format(announcement['id'], digest))
-        return
+    # Always post private messages.  Try not to spam public announcements.
+    if not private:
+      cutoff = datetime.datetime.utcnow() - datetime.timedelta(0, announcement['interval'])
+      logs = yield from client.logs_from(channel, after = cutoff)
+      digest = announcement['digest']
+      for message in logs:
+        raw = re.sub(r'^(<?@\S+\s)+', '', message.content).strip()
+        if hashlib.sha224(raw.encode('utf-8')).hexdigest() == digest:
+          log.debug('Saw previously posted announcement {} with digest {}'.format(announcement['id'], digest))
+          return
 
   if announcement['voice_id']:
     filename = announcement['sound']