Split long messages across multiple say() invocations.
authorCMDR furrycat <elite@furrycat.net>
Tue, 4 Oct 2016 13:00:54 +0000 (14:00 +0100)
committerCMDR furrycat <elite@furrycat.net>
Tue, 4 Oct 2016 13:00:54 +0000 (14:00 +0100)
bot.py

diff --git a/bot.py b/bot.py
index 25dde13..bdbd7e1 100755 (executable)
--- a/bot.py
+++ b/bot.py
@@ -199,6 +199,15 @@ def say(channel, text, *, wake = None):
   return message
 
 @asyncio.coroutine
+def say_many(channel, lines, n = 25):
+  while len(lines):
+    # We can't print too big a message.
+    subset = lines[:n]
+    lines = lines[len(subset):]
+    message = '\n'.join(subset)
+    yield from say(channel, message)
+
+@asyncio.coroutine
 def say_expect(message, stdout):
   if stdout:
     log.debug(stdout)
@@ -350,12 +359,7 @@ def identify(destination, target):
           continue
         results.append(channel)
 
-  while len(results):
-    # We can't print too big a message.
-    subset = results[:25]
-    results = results[len(subset):]
-    message = '\n'.join(['{} {} {}'.format(Identify.string(result), result.id, result.name) for result in subset])
-    yield from say(destination, message)
+  yield from say_many(destination, ['{} {} {}'.format(Identify.string(result), result.id, result.name) for result in results])
 
 @asyncio.coroutine
 def do_commands(message, command, raw, non_admin):