diff options
author | diSabler <dissy@ya.ru> | 2014-01-08 00:29:45 +0400 |
---|---|---|
committer | diSabler <dissy@ya.ru> | 2014-01-08 00:29:45 +0400 |
commit | 6b7a7899f7515bd247dec15a4b4423a4ed47207d (patch) | |
tree | 096c96a913d8f5f610863ecfe80ab1920cf54df6 | |
parent | 0f493088560be8b3120b2327851c865eb03847d0 (diff) |
add: action for visitors by timeout
-rw-r--r-- | data/locales/ru.txt | 13 | ||||
-rw-r--r-- | data/locales/ua.txt | 8 | ||||
-rw-r--r-- | plugins/main.py | 4 | ||||
-rw-r--r-- | plugins/muc.py | 30 |
4 files changed, 43 insertions, 12 deletions
diff --git a/data/locales/ru.txt b/data/locales/ru.txt index b8194d6..e9752cd 100644 --- a/data/locales/ru.txt +++ b/data/locales/ru.txt @@ -1115,6 +1115,7 @@ just passed! только прошло! Updated: %s Обновлено: %s Command is locked! Команда заблокирована! I don't know %s Я не знаю кто такой %s +Too long was without voice! Слишком долго был без голоса! Ban user. Забанить участника. Ban user by jid. Забанить участника по jid. Unban user. Разбанить участника @@ -1484,6 +1485,8 @@ Censor muc filter is %s Действия muc-цензора: %s Censor filter Muc-цензор Blacklist %s Чёрный список %s Blacklist for caps Чёрный список для капсов +Time for visitors action %s Время для действия над гостем %s +Time for visitors action Время для действия над гостем Type of list %s Тип списка %s Type of list for caps Тип списка для капсов Bomb. Action for bomb explode %s Bomb. Действие при взрыве: %s @@ -1514,6 +1517,8 @@ Adblock muc filter is %s Блокировка рекламы: %s Adblock filter Фильтр блокировки рекламы Karma. Moderator role when karma is higher than %s Наделять полномочиями модератора при повышении кармы до %s Give a moderator role when karma is higher than defined value Наделять полномочиями модератора при повышении кармы выше заданного значения +Hash. Time to disable action %s Хеш. Время отключения действия: %s +Time to disable action Время отключения действия при повышенной активности хеша Custom rules for censor is %s Правила для пользовательского цензора %s Custom rules for censor Правила для пользовательского цензора Bomb. Reason %s Bomb. Причина с которой будет действие: %s @@ -1568,8 +1573,8 @@ Hash. Action for already joined %s Хеш. Действие для уже под Action for already joined Действие для уже подключенных клиентов Bomb. Allow random unexplosive bombs %s Bomb. Иногда не взрывать бомбы %s Allow some times take unexplosive bombs Иногда не взрывать бомбы -Hash. Time to disable action %s Хеш. Время отключения действия: %s -Time to disable action Время отключения действия при повышенной активности хеша +Action for visitors is %s Действие над гостем %s +Action for visitors Действие над гостем Action for invalid items %s Действие для некорректных элементов %s Action for invalid items Действие для некорректных элементов Mute all public messages %s Подавление всех публичных сообщений %s @@ -1820,5 +1825,5 @@ Youtube settings Настройки youtube API settings Настройки API # write locale file: ru.txt -# total: 1492 -# missed translations: 9 +# total: 1497 +# missed translations: 5 diff --git a/data/locales/ua.txt b/data/locales/ua.txt index 63c29cf..cca195f 100644 --- a/data/locales/ua.txt +++ b/data/locales/ua.txt @@ -1514,6 +1514,8 @@ Adblock muc filter is %s Блокування реклами: %s Adblock filter Фільтр блокування реклами Karma. Moderator role when karma is higher than %s Надавати повноваження модератора при підвищенні карми до %s Give a moderator role when karma is higher than defined value Надавати повноваження модератора при підвищенні карми вище вказаного значення +Hash. Time to disable action %s Хеш. Час відключення дії: %s +Time to disable action Час відключення дії при підвищеній активності хешу Custom rules for censor is %s Правила для користувацького цензора %s Custom rules for censor Правила для користувацького цензора Bomb. Reason %s Bomb. Причина з якою буде дія: %s @@ -1568,8 +1570,6 @@ Hash. Action for already joined %s Хеш. Дія для вже підключе Action for already joined Дія для вже підключених клієнтів Bomb. Allow random unexplosive bombs %s Bomb. Іноді не підривати бомби: %s Allow some times take unexplosive bombs Іноді не підривати бомби -Hash. Time to disable action %s Хеш. Час відключення дії: %s -Time to disable action Час відключення дії при підвищеній активності хешу Action for invalid items %s Дія для некоректних елементів %s Action for invalid items Дія для некоректних елементів Mute all public messages %s Придушення всих публічних повідомленнь %s @@ -1820,5 +1820,5 @@ Youtube settings Налаштування Youtube API settings Налаштування API # write locale file: ua.txt -# total: 1492 -# missed translations: 9 +# total: 1497 +# missed translations: 5 diff --git a/plugins/main.py b/plugins/main.py index db4aea0..708ec86 100644 --- a/plugins/main.py +++ b/plugins/main.py @@ -1557,6 +1557,8 @@ config_prefs = {'url_title': ['Url title is %s', 'Automatic show title of urls i 'set_default_locale': ['Set default locale %s', 'Ignore users locale and use one locale for all users in room', ['off','en'] + [tmp[:-4] for tmp in os.listdir(loc_folder[:-6]) if tmp[-4:]=='.txt'], 'off'], 'store_users_url': ['Store Users URL %s', 'Store Users URL', [True,False], True], 'trusted_servers': ['Trusted servers %s', 'Servers list marked as trusted. They are excluded from any actions with servers', None, ''], + 'visitor_action': ['Action for visitors is %s', 'Action for visitors', ['off','kick','ban'], 'off'], + 'visitor_action_time': ['Time for visitors action %s', 'Time for visitors action', None, '1800'], # MUC-Filter messages @@ -1681,7 +1683,7 @@ config_prefs = {'url_title': ['Url title is %s', 'Automatic show title of urls i config_group_other = ['Other settings','#room-other', ['url_title','parse_define','clear_answer','smiles','autoturn','make_stanza_jid_count','content_length','acl_multiaction', - 'paste_xhtml_images','set_default_locale','store_users_url','trusted_servers'],None] + 'paste_xhtml_images','set_default_locale','store_users_url','trusted_servers','visitor_action','visitor_action_time'],None] config_group_censor = ['Censor settings','#room-censor', ['censor','censor_warning','censor_action_member','censor_action_non_member', diff --git a/plugins/muc.py b/plugins/muc.py index 5dcd5d7..f42faa9 100644 --- a/plugins/muc.py +++ b/plugins/muc.py @@ -21,6 +21,8 @@ # # # --------------------------------------------------------------------------- # +visitors_list = {} + # -------------- affiliation ----------------- def global_ban(type, jid, nick, text): @@ -193,9 +195,31 @@ def check_unban(): for t in ul: sender(xmpp.Node('iq', {'id': get_id(), 'type': 'set', 'to':t[0]}, payload = [xmpp.Node('query', {'xmlns': xmpp.NS_MUC_ADMIN},[xmpp.Node('item',{'affiliation':'none', 'jid':getRoom(unicode(t[1]))},[])])])) cur_execute('delete from tmp_ban where time<%s;',(tt,)) -global execute, timer - -timer = [check_unban] +def check_visitor(): + global visitors_list + ITT = int(time.time()) + for t in visitors_list: + room = t.split('/')[0] + VISITOR_ACT = get_config(getRoom(room),'visitor_action') + if VISITOR_ACT != 'off' and ITT > visitors_list[t]: + reason = [xmpp.Node('reason',{},L('Too long was without voice!',t))] + if VISITOR_ACT == 'kick': sender(xmpp.Node('iq', {'id': get_id(), 'type': 'set', 'to':room}, payload = [xmpp.Node('query', {'xmlns': xmpp.NS_MUC_ADMIN},[xmpp.Node('item',{'role':'none', 'nick':t.split('/',1)[1]},reason)])])) + else: sender(xmpp.Node('iq', {'id': get_id(), 'type': 'set', 'to':room}, payload = [xmpp.Node('query', {'xmlns': xmpp.NS_MUC_ADMIN},[xmpp.Node('item',{'affiliation':'outcast', 'jid':get_jid_by_nick(t.split('/',1))},reason)])])) + +def visitor_presence(room,jid,nick,type,mass): + global visitors_list + if getRoom(jid) == getRoom(Settings['jid']): return + was_joined = not mass[7] or is_start + if type == 'error': return + elif type == 'unavailable': + try: visitors_list.pop('%s/%s' % (room,nick)) + except: pass + if mass[1] == 'visitor': visitors_list['%s/%s' % (room,nick)] = int(time.time()) + get_config_int(getRoom(room),'visitor_action_time') + +global execute, timer, presence_control + +timer = [check_unban,check_visitor] +presence_control = [visitor_presence] execute = [(7, 'ban_past', muc_ban_past, 2, 'Ban user.'), (7, 'ban', muc_ban, 2, 'Ban user.'), |