Added hack to avoid running old commands after join.
This commit is contained in:
parent
b8499e1c99
commit
0dfcb4963a
19
bot.py
19
bot.py
|
@ -15,11 +15,11 @@ import traceback
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import logging
|
import logging
|
||||||
import logging.config
|
import logging.config
|
||||||
|
import datetime
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from nio import AsyncClient, InviteEvent, JoinError, RoomMessageText, MatrixRoom, LogoutResponse, LogoutError, \
|
from nio import AsyncClient, InviteEvent, JoinError, RoomMessageText, MatrixRoom, LogoutResponse, LoginError
|
||||||
LoginError
|
|
||||||
|
|
||||||
|
|
||||||
# Couple of custom exceptions
|
# Couple of custom exceptions
|
||||||
|
@ -37,7 +37,7 @@ class Bot:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.appid = 'org.vranki.hemppa'
|
self.appid = 'org.vranki.hemppa'
|
||||||
self.version = '1.2'
|
self.version = '1.3'
|
||||||
self.client = None
|
self.client = None
|
||||||
self.join_on_invite = False
|
self.join_on_invite = False
|
||||||
self.modules = dict()
|
self.modules = dict()
|
||||||
|
@ -47,6 +47,9 @@ class Bot:
|
||||||
self.debug = os.getenv("DEBUG", "false").lower() == "true"
|
self.debug = os.getenv("DEBUG", "false").lower() == "true"
|
||||||
self.logger = None
|
self.logger = None
|
||||||
|
|
||||||
|
self.jointime = None # HACKHACKHACK to avoid running old commands after join
|
||||||
|
self.join_hack_time = 5 # Seconds
|
||||||
|
|
||||||
self.initialize_logger()
|
self.initialize_logger()
|
||||||
|
|
||||||
def initialize_logger(self):
|
def initialize_logger(self):
|
||||||
|
@ -144,6 +147,13 @@ class Bot:
|
||||||
if not self.starts_with_command(body):
|
if not self.starts_with_command(body):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# HACK to ignore messages for some time after joining.
|
||||||
|
if self.jointime:
|
||||||
|
if (datetime.datetime.now() - self.jointime).seconds < self.join_hack_time:
|
||||||
|
self.logger.info(f"Waiting for join delay, ignoring message: {body}")
|
||||||
|
return
|
||||||
|
self.jointime = None
|
||||||
|
|
||||||
command = body.split().pop(0)
|
command = body.split().pop(0)
|
||||||
|
|
||||||
# Strip away non-alphanumeric characters, including leading ! for security
|
# Strip away non-alphanumeric characters, including leading ! for security
|
||||||
|
@ -179,12 +189,13 @@ class Bot:
|
||||||
|
|
||||||
if self.join_on_invite or self.is_owner(event):
|
if self.join_on_invite or self.is_owner(event):
|
||||||
for attempt in range(3):
|
for attempt in range(3):
|
||||||
|
self.jointime = datetime.datetime.now()
|
||||||
result = await self.client.join(room.room_id)
|
result = await self.client.join(room.room_id)
|
||||||
if type(result) == JoinError:
|
if type(result) == JoinError:
|
||||||
self.logger.error(f"Error joining room %s (attempt %d): %s", room.room_id, attempt, result.message)
|
self.logger.error(f"Error joining room %s (attempt %d): %s", room.room_id, attempt, result.message)
|
||||||
else:
|
else:
|
||||||
self.logger.info(f"joining room '{room.display_name}'({room.room_id}) invited by '{event.sender}'")
|
self.logger.info(f"joining room '{room.display_name}'({room.room_id}) invited by '{event.sender}'")
|
||||||
break
|
return
|
||||||
else:
|
else:
|
||||||
self.logger.warning(f'Received invite event, but not joining as sender is not owner or bot not configured to join on invite. {event}')
|
self.logger.warning(f'Received invite event, but not joining as sender is not owner or bot not configured to join on invite. {event}')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue