]> jfr.im git - erebus.git/commitdiff
refactor bot.msg/slowmsg/fastmsg to use a single helper function
authorJohn Runyon <redacted>
Sun, 30 Jan 2022 07:49:36 +0000 (01:49 -0600)
committerJohn Runyon <redacted>
Sun, 30 Jan 2022 07:49:36 +0000 (01:49 -0600)
bot.py

diff --git a/bot.py b/bot.py
index 3e02f9443007e9b2d07124d6f902821ff54a6102..51a5b8f2277ff2ab9db9fa0b9450f0b42ffd428d 100644 (file)
--- a/bot.py
+++ b/bot.py
@@ -7,8 +7,6 @@
 import socket, sys, time, threading, os, random
 from collections import deque
 
-MAXLEN = 400 # arbitrary max length of a command generated by Bot.msg functions
-
 if sys.version_info.major < 3:
        timerbase = threading._Timer
        stringbase = basestring
@@ -374,46 +372,37 @@ class Bot(object):
                else:
                        self.msg(user, msg)
 
-       def msg(self, target, msg, truncate=False):
+       """
+               Does the work for msg/slowmsg/fastmsg. Uses the append_callback to append to the correct queue.
+
+               In the case of fastmsg, self.conn.exceeded may be True, however, in this case append_callback=self.conn.send, so it will still be sent immediately.
+       """
+       def _msg(self, target, msg, truncate, append_callback):
                if self.parent.cfg.getboolean('erebus', 'nofakelag'): return self.fastmsg(target, msg)
+
                cmd = self._formatmsg(target, msg)
-               if len(cmd) > MAXLEN:
+               if len(cmd) > self.conn.recvq:
                        if not truncate:
                                return False
                        else:
-                               cmd = cmd[:MAXLEN]
+                               cmd = cmd[:self.conn.recvq]
+
                if self.conn.exceeded or self.conn.bytessent+len(cmd) >= self.conn.recvq:
-                       self.msgqueue.append(cmd)
+                       append_callback(cmd)
                else:
                        self.conn.send(cmd)
+
                self.conn.exceeded = True
                return True
 
+       def msg(self, target, msg, truncate=False):
+               return self._msg(target, msg, truncate, self.msgqueue.append)
+
        def slowmsg(self, target, msg, truncate=False):
-               if self.parent.cfg.getboolean('erebus', 'nofakelag'): return self.fastmsg(target, msg)
-               cmd = self._formatmsg(target, msg)
-               if len(cmd) > MAXLEN:
-                       if not truncate:
-                               return False
-                       else:
-                               cmd = cmd[:MAXLEN]
-               if self.conn.exceeded or self.conn.bytessent+len(cmd) >= self.conn.recvq:
-                       self.slowmsgqueue.append(cmd)
-               else:
-                       self.conn.send(cmd)
-               self.conn.exceeded = True
-               return True
+               return self._msg(target, msg, truncate, self.slowmsgqueue.append)
 
        def fastmsg(self, target, msg, truncate=False):
-               cmd = self._formatmsg(target, msg)
-               if len(cmd) > MAXLEN:
-                       if not truncate:
-                               return False
-                       else:
-                               cmd = cmd[:MAXLEN]
-               self.conn.send(cmd)
-               self.conn.exceeded = True
-               return True
+               return self._msg(target, msg, truncate, self.conn.send)
 
        def _formatmsg(self, target, msg):
                if target is None or msg is None:
@@ -481,7 +470,7 @@ class BotConnection(object):
                self.state = 0 # 0=disconnected, 1=registering, 2=connected
 
                self.bytessent = 0
-               self.recvq = 500
+               self.recvq = 400
                self.exceeded = False
                self._nowrite = False