1
0
mirror of http://aero2k.de/t/repos/urlbot-native.git synced 2017-09-06 15:25:38 +02:00

systemd support and separate message queues per room

This commit is contained in:
Thorsten
2016-06-22 22:13:51 +02:00
parent dff83acaf6
commit efd18525bb
5 changed files with 27 additions and 10 deletions

View File

@@ -0,0 +1,2 @@
ansible
markupsafe

12
deploy/urlbug@.service Normal file
View File

@@ -0,0 +1,12 @@
[Unit]
Description=jabber bot entertaining and supporting activity on jabber MUCs
[Service]
ExecStart=/home/jabberbot/botenv/bin/python3 /home/jabberbot/urlbot/%i.py
WorkingDirectory=/home/jabberbot/urlbot/
StandardOutput=journal+console
StandardError=journal+console
Restart=always
[Install]
WantedBy=multi-user.target

View File

@@ -801,9 +801,9 @@ def raise_an_error(argv, **args):
raise RuntimeError("Exception for debugging") raise RuntimeError("Exception for debugging")
@pluginfunction('repeat', 'repeat the last message', ptypes.COMMAND, enabled=False) @pluginfunction('repeat', 'repeat the last message', ptypes.COMMAND)
def repeat_message(argv, **args): def repeat_message(argv, **args):
return {'msg': 'disabled until channel separation'} if args['stack']:
return { return {
'msg': args['stack'][-1]['body'] 'msg': args['stack'][-1]['body']
} }

View File

@@ -22,6 +22,8 @@ def translate(argv, **args):
if not api_key: if not api_key:
return return
message_stack = args['stack'] message_stack = args['stack']
if not message_stack[-1]:
return
last_message = message_stack[-1]['body'] last_message = message_stack[-1]['body']
data = { data = {
'q': last_message, 'q': last_message,

View File

@@ -7,6 +7,8 @@ import re
import shlex import shlex
import sys import sys
import time import time
from collections import deque
from lxml import etree from lxml import etree
import requests import requests
@@ -34,7 +36,7 @@ class UrlBot(IdleBot):
self.hist_ts = {p: [] for p in rate_limit_classes} self.hist_ts = {p: [] for p in rate_limit_classes}
self.hist_flag = {p: True for p in rate_limit_classes} self.hist_flag = {p: True for p in rate_limit_classes}
self.message_stack = [] self.message_stack = {str(room): deque(maxlen=5) for room in self.rooms}
self.add_event_handler('message', self.message) self.add_event_handler('message', self.message)
self.priority = 100 self.priority = 100
@@ -196,9 +198,8 @@ class UrlBot(IdleBot):
except Exception as e: except Exception as e:
self.logger.exception(e) self.logger.exception(e)
finally: finally:
if len(self.message_stack) > 4: if msg_obj['from'].bare in self.rooms:
self.message_stack.pop(0) self.message_stack[msg_obj['from'].bare].append(msg_obj)
self.message_stack.append(msg_obj)
def handle_muc_online(self, msg_obj): def handle_muc_online(self, msg_obj):
""" """
@@ -268,7 +269,7 @@ class UrlBot(IdleBot):
reply_user=reply_user, reply_user=reply_user,
msg_obj=msg_obj, msg_obj=msg_obj,
argv=words[2:] if len(words) > 1 else [], argv=words[2:] if len(words) > 1 else [],
stack=self.message_stack stack=self.message_stack.get(msg_obj['from'].bare, [])
) )
if ret: if ret: