mirror of
http://aero2k.de/t/repos/urlbot-native.git
synced 2017-09-06 15:25:38 +02:00
new plugin: comment_joins
This commit is contained in:
@@ -14,6 +14,8 @@ start_time = integer(default=0)
|
|||||||
|
|
||||||
[user_records]
|
[user_records]
|
||||||
|
|
||||||
|
[user_joins]
|
||||||
|
|
||||||
[url_blacklist]
|
[url_blacklist]
|
||||||
heise = string(default='^.*heise\.de/.*-[0-9]+\.html$')
|
heise = string(default='^.*heise\.de/.*-[0-9]+\.html$')
|
||||||
wikipedia = string(default='^.*wikipedia\.org/wiki/.*$')
|
wikipedia = string(default='^.*wikipedia\.org/wiki/.*$')
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import time
|
||||||
|
import random
|
||||||
|
|
||||||
import config
|
import config
|
||||||
from common import (
|
from common import (
|
||||||
@@ -36,3 +38,39 @@ def send_record(**args):
|
|||||||
config.runtimeconf_persist()
|
config.runtimeconf_persist()
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
@pluginfunction('comment_joins', 'comments frequent joins', ptypes_MUC_ONLINE)
|
||||||
|
@config_locked
|
||||||
|
def comment_joins(**args):
|
||||||
|
# max elapsed time between the latest and the N latest join
|
||||||
|
timespan = 120
|
||||||
|
max_joins = 6
|
||||||
|
|
||||||
|
comment_joins_strings = [
|
||||||
|
"%s: please consider to fix your internet connection"
|
||||||
|
]
|
||||||
|
|
||||||
|
current_timestamp = int(time.time())
|
||||||
|
|
||||||
|
arg_user = args['reply_user']
|
||||||
|
arg_user_key = arg_user.lower()
|
||||||
|
|
||||||
|
if arg_user_key not in config.runtime_config_store['user_joins']:
|
||||||
|
config.runtime_config_store['user_joins'][arg_user_key] = [ current_timestamp ]
|
||||||
|
config.runtimeconf_persist()
|
||||||
|
return None
|
||||||
|
|
||||||
|
user_joins = config.runtime_config_store['user_joins'][arg_user_key]
|
||||||
|
|
||||||
|
user_joins = [
|
||||||
|
ts if current_timestamp - int(ts) <= timespan else [] for ts in user_joins
|
||||||
|
]
|
||||||
|
user_joins.append(current_timestamp)
|
||||||
|
|
||||||
|
if len(user_joins) >= max_joins:
|
||||||
|
config.runtime_config_store['user_joins'].pop(arg_user_key)
|
||||||
|
config.runtimeconf_persist()
|
||||||
|
return { 'msg': random.choice(comment_joins_strings) % arg_user }
|
||||||
|
else:
|
||||||
|
config.runtimeconf_persist()
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ class UrlBot(IdleBot):
|
|||||||
|
|
||||||
ret = plugin(reply_user=reply_user)
|
ret = plugin(reply_user=reply_user)
|
||||||
if ret:
|
if ret:
|
||||||
self._run_action(ret, plugin, msg_obj)
|
self._run_action(ret, plugin, None)
|
||||||
|
|
||||||
def data_parse_commands(self, msg_obj):
|
def data_parse_commands(self, msg_obj):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user