From 48ed76f21630548a3b49ac54360c8ff9036a93b6 Mon Sep 17 00:00:00 2001 From: diSabler Date: Thu, 16 Jul 2015 21:05:41 +0300 Subject: fix: variables priority --- data/locales/ru.txt | 57 +------- data/locales/ua.txt | 57 +------- kernel.py | 12 +- plugins/acl.py | 2 + plugins/wot.py | 364 ---------------------------------------------------- 5 files changed, 12 insertions(+), 480 deletions(-) delete mode 100644 plugins/wot.py diff --git a/data/locales/ru.txt b/data/locales/ru.txt index 0b39bd7..bf25746 100644 --- a/data/locales/ru.txt +++ b/data/locales/ru.txt @@ -1368,59 +1368,6 @@ For a last day i see: %s За последние сутки я видела: %s All who i see for a last day now is here. Все, кого я видела за сутки, находятся тут. Show list of users for last day Показ списка участников за сутки -# file: plugins/wot.py -Use more characters in the name of the tank Используйте больше символов в названии танка -none отсутствует -3 class 3 степень -2 class 2 степень -1 class 1 степень -master мастер -\n%s: %s/%s (%s%%), avg.damage: %s, xp (avg/max): %s/%s,%s mastery: %s \n%s: %s/%s (%s%%), ср.урон: %s, опыт (ср/макс): %s/%s,%s классность: %s - not founded tank танк не найден -Impossible to get tanks' statistics Невозможно получить статистику танков -\nUp to %s%% win left: %s battles \nДо %s%% побед осталось: %s битв -\nAv. damage: %s \nСр. дамаг: %s -\nAv. destroyed: %s \nВ ср. уничтожено: %s -\nAv. spotted: %s \nВ ср. обнаружено: %s -\nAv. captured points: %s \nВ ср. очков захвата: %s -\nAv. defense points: %s \nВ ср. очков защиты: %s -\nAv. tank lvl: %s \nСр. уровень танков: %s -\nEfficiency rating: %s (XVM: %s) \nРейтинг эффективности: %s (XVM: %s) - - bad player - плохой игрок - - player below average - игрок ниже среднего - - average player - средний игрок - - good player - хороший игрок - - great player - превосходный игрок - - unicum - уникум -\nWN6 rating: %s (XVM: %s) \nРейтинг WN6: %s (XVM: %s) -\nWN8 rating: %s (XVM: %s) \nРейтинг WN8: %s (XVM: %s) -\nWG rating: %s \nРейтинг WG: %s -\nArmor-rating: %s \nРейтинг Бронесайта: %s - - virtuoso - виртуоз - - master tanker - мастер-танкист - - tanker 1st class - танкист 1-го класса - - tanker 2nd class - танкист 2-го класса - - tanker 3rd class - танкист 3-го класса - - deerhead 3rd class - оленевод 3-го класса - - deerhead 2nd class - оленевод 2-го класса - - deerhead 1st class - оленевод 1-го класса - - master deerhead - мастер-оленевод -\nLast seen: \nПоследний раз замечен: -%s\n- in battle: %s %s\n- в бою: %s -%s\n- online: %s %s\n- в сети: %s -Impossible to get statistics Невозможно получить статистику -Query error Ошибка запроса -Player not found Игрок не найден -Name: %s [%s] Название: %s [%s] -\nOwner: %s \nВладелец: %s -\nCreated at: %s \nДата создания: %s -\nCount of members: %s \nКоличество участников: %s -\nMotto: %s \nДевиз: %s -Clan not found Клан не найден -Impossible to get info Невозможно получить информацию -World of Tanks - info about user. Usage: wot [nick [tank]] World of Tanks - информация о пользователе. Использование: wot [ник [танк]] -World of Tanks - info about clan. Usage: wotclan clan World of Tanks - информация о клане. Пример: wotclan клан - # file: plugins/wtf.py I know that %s is %s Я знаю, что %s - %s from %s: %s от %s: %s @@ -1858,5 +1805,5 @@ API settings Настройки API World of Tanks settings Настройки плагина World of Tanks # write locale file: ru.txt -# total: 1434 -# missed translations: 3 +# total: 1384 +# regenarated without mistakes! diff --git a/data/locales/ua.txt b/data/locales/ua.txt index 450d0c1..6f04707 100644 --- a/data/locales/ua.txt +++ b/data/locales/ua.txt @@ -1368,59 +1368,6 @@ For a last day i see: %s Протягом останньої доби я бач All who i see for a last day now is here. Всі, кого я бачила протягом доби, знаходяться тут. Show list of users for last day Показ списку учасників за добу -# file: plugins/wot.py -Use more characters in the name of the tank Використовуйте більше символів в назві танку -none відсутня -3 class 3 степінь -2 class 2 степінь -1 class 1 степінь -master майстер -\n%s: %s/%s (%s%%), avg.damage: %s, xp (avg/max): %s/%s,%s mastery: %s \n%s: %s/%s (%s%%), сер.ушкодж.: %s, досвід (сер/макс): %s/%s,%s класність: %s - not founded tank танк не знайдено -Impossible to get tanks' statistics Неможливо отримати статистику танків -\nUp to %s%% win left: %s battles \nДо %s%% перемог залишилося: %s битв -\nAv. damage: %s \nСер. дамаг: %s -\nAv. destroyed: %s \nВ сер. знищено: %s -\nAv. spotted: %s \nВ сер. знайдено: %s -\nAv. captured points: %s \nВ сер. очків захвату: %s -\nAv. defense points: %s \nВ сер. очків захисту: %s -\nAv. tank lvl: %s \nСер. рівень танків: %s -\nEfficiency rating: %s (XVM: %s) \nРейтинг ефективності: %s (XVM: %s) - - bad player - поганий гравець - - player below average - гравець нижче середнього - - average player - середній гравець - - good player - хороший гравець - - great player - чудовий гравець - - unicum - унікум -\nWN6 rating: %s (XVM: %s) \nРейтинг WN6: %s (XVM: %s) -\nWN8 rating: %s (XVM: %s) \nРейтинг WN8: %s (XVM: %s) -\nWG rating: %s \nРейтинг WG: %s -\nArmor-rating: %s \nРейтинг Бронесайту: %s - - virtuoso - віртуоз - - master tanker - майстер-танкіст - - tanker 1st class - танкіст 1-го класу - - tanker 2nd class - танкіст 2-го класу - - tanker 3rd class - танкіст 3-го класу - - deerhead 3rd class - оленевід 3-го класу - - deerhead 2nd class - оленевід 2-го класу - - deerhead 1st class - оленевід 1-го класу - - master deerhead - майстер-оленевід -\nLast seen: \nОстанній раз помічений: -%s\n- in battle: %s %s\n- в бою: %s -%s\n- online: %s %s\n- в мережі: %s -Impossible to get statistics Неможливо отримати статистику -Query error Помилка запиту -Player not found Гравця не знайдено -Name: %s [%s] Назва: %s [%s] -\nOwner: %s \nВласник: %s -\nCreated at: %s \nДата створення: %s -\nCount of members: %s \nКількість учасників: %s -\nMotto: %s \nДевіз: %s -Clan not found Клан не знайдено -Impossible to get info Неможливо отримати інформацію -World of Tanks - info about user. Usage: wot [nick [tank]] World of Tanks - інформація про користувача. Використання: wot [нік [танк]] -World of Tanks - info about clan. Usage: wotclan clan World of Tanks - інформація про клан. Приклад: wotclan клан - # file: plugins/wtf.py I know that %s is %s Я знаю, що %s - %s from %s: %s від %s: %s @@ -1858,5 +1805,5 @@ API settings Налаштування API World of Tanks settings Налаштування плагіна World of Tanks # write locale file: ua.txt -# total: 1434 -# missed translations: 3 +# total: 1384 +# regenarated without mistakes! diff --git a/kernel.py b/kernel.py index 69964df..6154c5c 100644 --- a/kernel.py +++ b/kernel.py @@ -1568,7 +1568,7 @@ nmbrs = ['0','1','2','3','4','5','6','7','8','9','.'] ul = slog_folder % 'update.log' # лог последнего обновление halt_on_exception = False # остановка на ошибках debug_xmpppy = False # отладка xmpppy -debug_console = False # отладка действий бота +debug_console = True # отладка действий бота CommandsLog = None # логгирование команд prefix = '_' # префикс комманд msg_limit = 1000 # лимит размера сообщений @@ -1648,6 +1648,11 @@ elif lt[0:3] > gt[0:3]: timeofset = int(lt[3])-int(gt[3]) + 24 else: timeofset = int(gt[3])-int(lt[3]) + 24 is_win32 = sys.platform == 'win32' +if is_win32: + import ctypes + ctypes.windll.Kernel32.GetStdHandle.restype = ctypes.c_ulong + win_console_color = ctypes.windll.Kernel32.GetStdHandle(ctypes.c_ulong(0xfffffff5)) + if os.path.isfile(configname): execfile(configname) else: errorHandler('%s is missed.' % configname) @@ -1705,11 +1710,6 @@ if thread_type: else: import thread -if is_win32: - import ctypes - ctypes.windll.Kernel32.GetStdHandle.restype = ctypes.c_ulong - win_console_color = ctypes.windll.Kernel32.GetStdHandle(ctypes.c_ulong(0xfffffff5)) - botVersion = get_bot_version() try: tmp = botOs except: botOs = os_version() diff --git a/plugins/acl.py b/plugins/acl.py index a0c5571..e3d8923 100644 --- a/plugins/acl.py +++ b/plugins/acl.py @@ -34,6 +34,8 @@ def acl_show(jid,nick,text): a = cur_execute_fetchall('select * from acl where jid=%s and action ilike %s order by level,action',(jid,text)) if len(a): msg = L('Acl:','%s/%s'%(jid,nick)) + msg = L('Acl111:','%s/%s'%(jid,nick)) + msg = L('Acl122:','%s/%s'%(jid,nick)) for tmp in a: if text == '%': t4 = tmp[4].replace('\n',' // ') else: t4 = tmp[4].replace('\n','\n ') diff --git a/plugins/wot.py b/plugins/wot.py deleted file mode 100644 index 6ce3813..0000000 --- a/plugins/wot.py +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# --------------------------------------------------------------------------- # -# # -# Plugin for iSida Jabber Bot # -# Copyright (C) 2013 VitaliyS # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -# --------------------------------------------------------------------------- # - -import wgpapi - -wot_api = wgpapi.Session(getattr(wgpapi.Server, GT('wot_region')), GT('wot_appid'), GT('wot_retries'), GT('wot_delay')) - -clantags = re.compile('(\(.*?\))|(\[.*?\])') - -def get_tanks_data(): - d = wot_api.fetch('wot/encyclopedia/tanks', 'fields=level,name_i18n,name') - res = {} - for i in d: - n18 = d[i]['name_i18n'].rsplit(':', 1)[-1].replace('_', ' ') - n = d[i]['name'].rsplit(':', 1)[-1].replace('_', ' ') - res[i] = {'name_i18n': n18, 'name': n, 'level': d[i]['level']} - return res - -def getExtValue(): - try: - data = load_page('http://www.wnefficiency.net/exp/expected_tank_values_latest.json') - v = json.loads(data) - extv = dict([[d['IDNum'], {'expFrag':d['expFrag'],'expDamage':d['expDamage'],'expSpot':d['expSpot'],'expDef':d['expDef'],'expWinRate':d['expWinRate']}] for d in v['data']]) - return extv - except: - return - -try: - tanks_data = get_tanks_data() -except: - tanks_data = {} - -extv = getExtValue() - -def wot(type, jid, nick, text): - text = text.strip() - if not text: - tmp_text = clantags.sub('', nick).strip().split(' ', 1)[0] - if re.match('[\da-zA-Z_].*?', tmp_text): - text = tmp_text - if text: - text = text.split(' ', 1) - if len(text) == 1: - name, tank = text[0], '' - else: - name, tank = text[0], text[1].lower() - - try: - - v = wot_api.fetch('wot/account/list', 'search=%s&fields=account_id&limit=1' % name) - player_id = str(v[0]['account_id']) - - vdata = wot_api.fetch('wot/tanks/stats', 'account_id=%s' % player_id) - - pdata = wot_api.fetch('wot/account/info', 'account_id=%s&fields=nickname,statistics,global_rating,last_battle_time,logout_at' % player_id) - stat = pdata[player_id]['statistics'] - - claninfo = wot_api.fetch('wot/clan/membersinfo', 'member_id=%s' % player_id) - - if claninfo[player_id]: - clan_id = str(claninfo[player_id]['clan_id']) - cdata = wot_api.fetch('wot/clan/info', 'clan_id=%s&fields=abbreviation' % clan_id) - cname = cdata[clan_id]['abbreviation'] - except: - pdata = None - - if pdata and pdata[player_id]: - wotname = pdata[player_id]['nickname'] + ('[%s]' % cname if claninfo[player_id] else '') - - if tank: - if len(tank) == 1: - msg = L('Use more characters in the name of the tank','%s/%s'%(jid,nick)) - else: - try: - msg = '%s:' % wotname - tids = [tid for tid in tanks_data if tank in tanks_data[tid]['name'].lower() or tank in tanks_data[tid]['name_i18n'].lower()] - - for t in vdata[player_id]: - if str(t['tank_id']) in tids: - tank_win = t['all']['wins'] - tank_battle = t['all']['battles'] - if tank_battle: - tank_avgxp = t['all']['battle_avg_xp'] - tank_maxxp = t['max_xp'] - mom = [ L('none','%s/%s'%(jid,nick)), - L('3 class','%s/%s'%(jid,nick)), - L('2 class','%s/%s'%(jid,nick)), L('1 class','%s/%s'%(jid,nick)), - L('master','%s/%s'%(jid,nick))][t['mark_of_mastery']] - tank_dmg = int(round(t['all']['damage_dealt'] / float(tank_battle), 0)) - tank_name = tanks_data[str(t['tank_id'])]['name_i18n'] - tank_wins = round(100.0*tank_win/tank_battle, 2) - - if extv and extv.has_key(t['tank_id']): - #wn8 - expDmg = tank_battle * extv[t['tank_id']]['expDamage'] - expSpot = tank_battle * extv[t['tank_id']]['expSpot'] - expFrag = tank_battle * extv[t['tank_id']]['expFrag'] - expDef = tank_battle * extv[t['tank_id']]['expDef'] - expWins = tank_battle * extv[t['tank_id']]['expWinRate'] / 100.0 - - rDAMAGE = t['all']['damage_dealt'] / expDmg - rSPOT = t['all']['spotted'] / expSpot - rFRAG = t['all']['frags'] / expFrag - rDEF = t['all']['dropped_capture_points'] / expDef - rWIN = tank_win / expWins - - rWINc = max(0, (rWIN - 0.71) / (1 - 0.71) ) - rDAMAGEc = max(0, (rDAMAGE - 0.22) / (1 - 0.22) ) - rFRAGc = max(0, min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))) - rSPOTc = max(0, min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))) - rDEFc = max(0, min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10))) - - twn8 = 980*rDAMAGEc + 210*rDAMAGEc*rFRAGc + 155*rFRAGc*rSPOTc + 75*rDEFc*rFRAGc + 145*min(1.8,rWINc) - - if twn8 > 3400: - twn8_xvm = 100 - else: - twn8_xvm = max(min(twn8*(twn8*(twn8*(twn8*(twn8*(9.553e-20*twn8 - 1.644e-16) - 4.26e-12) + 1.97e-8) - 3.192e-5) + 5.6265e-2) - 0.157, 100), 0) - WN8_TXT = ' WN8: %s (%s),' % (int(round(twn8)), round(twn8_xvm, 1)) - else: - WN8_TXT = '' - - msg += L('\n%s: %s/%s (%s%%), avg.damage: %s, xp (avg/max): %s/%s,%s mastery: %s','%s/%s'%(jid,nick)) % (tank_name, tank_win, tank_battle, tank_wins, tank_dmg, tank_avgxp, tank_maxxp, WN8_TXT, mom) - - else: - msg += '\n%s (%s/%s)' % (tanks_data[str(t['tank_id'])]['name_i18n'], tank_win, tank_battle) - if not msg.count('\n'): - msg += L(' not founded tank','%s/%s'%(jid,nick)) - except: - msg = L('Impossible to get tanks\' statistics','%s/%s'%(jid,nick)) - else: - - wins = stat['all']['wins'] - battles = stat['all']['battles'] - - if not battles: - msg = '%s: %s/%s' % (wotname, wins, battles) - - else: - try: - win_percent = round(100.0 * wins / battles, 2) - msg = '%s: %s/%s (%s%%)' % (wotname, wins, battles, win_percent) - - np = int(win_percent) + 1 - np_int = int((np * battles - 100 * wins) / (100 - np) + 1) - np05 = int(win_percent + 0.5) + 0.5 - np_round = int((np05 * battles - 100 * wins) / (100 - np05) + 1) - - msg += L('\nUp to %s%% win left: %s battles', '%s/%s'%(jid,nick)) % (np, np_int) - msg += L('\nUp to %s%% win left: %s battles', '%s/%s'%(jid,nick)) % (np05, np_round) - - avg_exp = stat['all']['battle_avg_xp'] - - DAMAGE = stat['all']['damage_dealt'] / float(battles) - msg += L('\nAv. damage: %s','%s/%s'%(jid,nick)) % int(round(DAMAGE)) - FRAGS = stat['all']['frags'] / float(battles) - msg += L('\nAv. destroyed: %s','%s/%s'%(jid,nick)) % round(FRAGS, 2) - SPOT = stat['all']['spotted'] / float(battles) - msg += L('\nAv. spotted: %s','%s/%s'%(jid,nick)) % round(SPOT, 2) - CAP = stat['all']['capture_points'] / float(battles) - msg += L('\nAv. captured points: %s','%s/%s'%(jid,nick)) % round(CAP, 2) - DEF = stat['all']['dropped_capture_points'] / float(battles) - msg += L('\nAv. defense points: %s','%s/%s'%(jid,nick)) % round(DEF, 2) - tanks = [vh for vh in vdata[player_id] if vh['all']['battles']] - s = sum([t['all']['battles'] * tanks_data[str(t['tank_id'])]['level'] for t in tanks]) - TIER = s / float(battles) - WINRATE = wins / float(battles) - msg += L('\nAv. tank lvl: %s','%s/%s'%(jid,nick)) % round(TIER, 2) - - er = DAMAGE * (10 / (TIER + 2)) * (0.23 + 2 * TIER / 100) + FRAGS * 250 + SPOT * 150 + math.log(CAP + 1) / math.log(1.732) * 150 + DEF * 150 - if er < 350: - er_xvm = 0 - else: - er_xvm = max(min(er*(er*(er*(er*(er*(3.388e-17*er - 2.469e-13) + 6.9335e-10) - 9.5342e-7) + 6.656e-4) -0.1485) - 0.85, 100), 0) - - msg += L('\nEfficiency rating: %s (XVM: %s)','%s/%s'%(jid,nick)) % (int(round(er)), round(er_xvm, 1)) - - if er < 610: - msg += L(' - bad player','%s/%s'%(jid,nick)) - elif er < 850: - msg += L(' - player below average','%s/%s'%(jid,nick)) - elif er < 1145: - msg += L(' - average player','%s/%s'%(jid,nick)) - elif er < 1475: - msg += L(' - good player','%s/%s'%(jid,nick)) - elif er < 1775: - msg += L(' - great player','%s/%s'%(jid,nick)) - elif er >= 1775: - msg += L(' - unicum','%s/%s'%(jid,nick)) - - wn6 = (1240 - 1040 / math.pow((min(TIER, 6)), 0.164)) * FRAGS + DAMAGE * 530 / (184 * math.exp(0.24 * TIER) + 130) + SPOT * 125 + min(DEF, 2.2) * 100 + ((185 / (0.17 + math.exp((WINRATE * 100 - 35) * -0.134))) - 500) * 0.45 + (6 - min(TIER, 6)) * (-60) - - if wn6 > 2300: - wn6_xvm = 100 - else: - wn6_xvm = max(min(wn6*(wn6*(wn6*(wn6*(wn6*(4.66e-18*wn6 - 3.2413e-14) + 7.524e-11) - 6.516e-8) + 1.307e-5) + 5.153e-2) - 3.9, 100), 0) - - msg += L('\nWN6 rating: %s (XVM: %s)','%s/%s'%(jid,nick)) % (int(round(wn6)), round(wn6_xvm, 1)) - - if wn6 < 410: - msg += L(' - bad player','%s/%s'%(jid,nick)) - elif wn6 < 795: - msg += L(' - player below average','%s/%s'%(jid,nick)) - elif wn6 < 1185: - msg += L(' - average player','%s/%s'%(jid,nick)) - elif wn6 < 1585: - msg += L(' - good player','%s/%s'%(jid,nick)) - elif wn6 < 1925: - msg += L(' - great player','%s/%s'%(jid,nick)) - elif wn6 >= 1925: - msg += L(' - unicum','%s/%s'%(jid,nick)) - - if extv: - expDmg = 0 - expSpot = 0 - expFrag = 0 - expDef = 0 - expWins = 0 - - for t in vdata[player_id]: - if not extv.has_key(t['tank_id']): - continue - - tank_battle = t['all']['battles'] - - expDmg += tank_battle * extv[t['tank_id']]['expDamage'] - expSpot += tank_battle * extv[t['tank_id']]['expSpot'] - expFrag += tank_battle * extv[t['tank_id']]['expFrag'] - expDef += tank_battle * extv[t['tank_id']]['expDef'] - expWins += tank_battle * extv[t['tank_id']]['expWinRate'] / 100.0 - - rDAMAGE = stat['all']['damage_dealt'] / expDmg - rSPOT = stat['all']['spotted'] / expSpot - rFRAG = stat['all']['frags'] / expFrag - rDEF = stat['all']['dropped_capture_points'] / expDef - rWIN = wins / expWins - - rWINc = max(0, (rWIN - 0.71) / (1 - 0.71) ) - rDAMAGEc = max(0, (rDAMAGE - 0.22) / (1 - 0.22) ) - rFRAGc = max(0, min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))) - rSPOTc = max(0, min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))) - rDEFc = max(0, min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10))) - - #http://www.koreanrandom.com/forum/topic/13434-%D1%80%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3-wn8-%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0-%D0%BE%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/ - wn8 = 980*rDAMAGEc + 210*rDAMAGEc*rFRAGc + 155*rFRAGc*rSPOTc + 75*rDEFc*rFRAGc + 145*min(1.8,rWINc) - - if wn8 > 3400: - wn8_xvm = 100 - else: - wn8_xvm = max(min(wn8*(wn8*(wn8*(wn8*(wn8*(9.553e-20*wn8 - 1.644e-16) - 4.26e-12) + 1.97e-8) - 3.192e-5) + 5.6265e-2) - 0.157, 100), 0) - - msg += L('\nWN8 rating: %s (XVM: %s)','%s/%s'%(jid,nick)) % (int(round(wn8)), round(wn8_xvm, 1)) - - if wn8 < 355: - msg += L(' - bad player','%s/%s'%(jid,nick)) - elif wn8 < 820: - msg += L(' - player below average','%s/%s'%(jid,nick)) - elif wn8 < 1370: - msg += L(' - average player','%s/%s'%(jid,nick)) - elif wn8 < 2020: - msg += L(' - good player','%s/%s'%(jid,nick)) - elif wn8 < 2620: - msg += L(' - great player','%s/%s'%(jid,nick)) - elif wn8 >= 2620: - msg += L(' - unicum','%s/%s'%(jid,nick)) - - msg += L('\nWG rating: %s','%s/%s'%(jid,nick)) % pdata[player_id]['global_rating'] - - stat_rnd = lambda x: stat['all'][x] - stat['clan'][x] - stat['company'][x] - - armor = math.log(stat_rnd('battles')) / 10 * (stat_rnd('xp')/float(stat_rnd('battles')) + stat_rnd('damage_dealt')/float(stat_rnd('battles')) * (stat_rnd('wins') * 2 + stat_rnd('frags') * 0.9 + (stat_rnd('spotted') + stat_rnd('capture_points') + stat_rnd('dropped_capture_points')) * 0.5)/float(stat_rnd('battles'))) - - msg += L('\nArmor-rating: %s','%s/%s'%(jid,nick)) % int(round(armor)) - - try: - data = load_page('http://armor.kiev.ua/wot/api.php?version=iSida3') - armor_limits = json.loads(data) - - if armor > armor_limits['classRatings']['cv']: - msg += L(' - virtuoso','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['cm']: - msg += L(' - master tanker','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['c1']: - msg += L(' - tanker 1st class','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['c2']: - msg += L(' - tanker 2nd class','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['c3']: - msg += L(' - tanker 3rd class','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['d3']: - msg += L(' - deerhead 3rd class','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['d2']: - msg += L(' - deerhead 2nd class','%s/%s'%(jid,nick)) - elif armor > armor_limits['classRatings']['d1']: - msg += L(' - deerhead 1st class','%s/%s'%(jid,nick)) - else: #['dm'] - msg += L(' - master deerhead','%s/%s'%(jid,nick)) - except: - pass - msg += L('\nLast seen:','%s/%s'%(jid,nick)) - msg = L('%s\n- in battle: %s','%s/%s'%(jid,nick)) % (msg, datetime.datetime.fromtimestamp(pdata[player_id]['last_battle_time'])) - msg = L('%s\n- online: %s','%s/%s'%(jid,nick)) % (msg, datetime.datetime.fromtimestamp(pdata[player_id]['logout_at'])) - - except: - msg = L('Impossible to get statistics','%s/%s'%(jid,nick)) - elif not pdata['status']: - msg = L('Query error','%s/%s'%(jid,nick)) - else: - msg = L('Player not found','%s/%s'%(jid,nick)) - else: - msg = L('What?','%s/%s'%(jid,nick)) - send_msg(type,jid,nick,msg) - -def wotclan(type, jid, nick, text): - text = text.strip().upper() - if text: - try: - data = wot_api.fetch('wot/clan/list/', 'search=%s' % text) - claninfo = [i for i in data if i['abbreviation'] == text] - if claninfo: - claninfo = claninfo[0] - clid = claninfo['clan_id'] - owner = claninfo['owner_name'] - created_at = claninfo['created_at'] - abbrev = claninfo['abbreviation'] - data = wot_api.fetch('wot/clan/info/', 'clan_id=%s' % clid) - claninfo2 = data[str(clid)] - msg = L('Name: %s [%s]','%s/%s'%(jid,nick)) % (claninfo2['name'], abbrev) - msg += L('\nOwner: %s','%s/%s'%(jid,nick)) % owner - msg += L('\nCreated at: %s','%s/%s'%(jid,nick)) % time.ctime(created_at) - msg += L('\nCount of members: %s','%s/%s'%(jid,nick)) % claninfo2['members_count'] - msg += L('\nMotto: %s','%s/%s'%(jid,nick)) % claninfo2['motto'] - msg += '\n%s' % claninfo2['description'] - else: - msg = L('Clan not found','%s/%s'%(jid,nick)) - except: - msg = L('Impossible to get info','%s/%s'%(jid,nick)) - else: - msg = L('What?','%s/%s'%(jid,nick)) - send_msg(type,jid,nick,msg) - -global execute - -execute = [(3, 'wot', wot, 2, 'World of Tanks - info about user. Usage: wot [nick [tank]]'), - (3, 'wotclan', wotclan, 2, 'World of Tanks - info about clan. Usage: wotclan clan')] -- cgit v1.2.3