diff --git a/ubot.py b/ubot.py index d7a5b5a..1fae635 100644 --- a/ubot.py +++ b/ubot.py @@ -193,85 +193,65 @@ async def main(): # хто там кого йобнув(ла) m = event.message t = m.raw_text + # NOTE: theme hell... any ideas for improvment required + # but not use huge regular expression like|that|fuckin|way|a|aaaa|aaaaaaaa + # because it makes re.findall like mess... + default_bioexpr_theme = r"Прибыль: ([0-9\.\,k]+)" + default_infected_days_theme = r' на ([0-9\ ]+) д.*' + default_pathogen_remaining_theme = r'Осталось: ([0-9\ ]+)' bio_attack_themes = ( # I guess if too many themes it will be slow, but acceptable, because python slow as is. + # current order in theme: + # ('infected', 'bio_expr', 'infected days', 'pathogen remaining') # UA theme - r'.* йобнув.+', + (r'.* йобнув.+', + r"([0-9\.\,k]+) біо-ресурса", + default_infected_days_theme, + default_pathogen_remaining_theme), # RU theme - r'.* подверг.+', + (r'.* подверг.+', + default_bioexpr_theme, + default_infected_days_theme, + default_pathogen_remaining_theme), # EN theme - r'.* infected.+', + (r'.* infected.+', + r"([0-9\.\,k]+) pcs\.", + r' for ([0-9\ ]+) d.*', + r'Remaining: ([0-9\ ]+)'), # AZ theme - r'.* сикди.+', + (r'.* сикди.+', + r"верир: ([0-9\.\,k]+)", + default_infected_days_theme, + default_pathogen_remaining_theme), # "ПК гик" theme - r'.* насрал.+', + (r'.* насрал.+', + r"потеряет: ([0-9\.\,k]+)", + default_infected_days_theme, + default_pathogen_remaining_theme), # "Новогодняя" theme - r'.* подверг заморозке.+', + (r'.* подверг заморозке.+', + default_bioexpr_theme, + default_infected_days_theme, + default_pathogen_remaining_theme), # UA theme [via trust] - r'.* за допомогою довіреності зазнала зараження.+', + (r'.* за допомогою довіреності зазнала зараження.+', + r"([0-9\.\,k]+) біо-ресурса", + default_infected_days_theme, + default_pathogen_remaining_theme), # RU theme [via trust] - r'.* при помощи доверенности подвергла заражению.+', + (r'.* при помощи доверенности подвергла заражению.+', + default_bioexpr_theme, + default_infected_days_theme, + default_pathogen_remaining_theme), # EN theme [via trust] - r'.* by authorization infected.+', + (r'.* by authorization infected.+', + r"([0-9\.\,k]+) pcs\.", + r' for ([0-9\ ]+) d.*', + r'Remaining: ([0-9\ ]+)'), # idk what is theme [via trust] - r'.* при помощи анонимуса атаковала.+', - ) - bio_expr_themes = ( - # UA theme - r"([0-9\.\,k]+) біо-ресурса", - # RU theme - r"Прибыль: ([0-9\.\,k]+)", - # EN theme - r"([0-9\.\,k]+) pcs\.", - # AZ theme - r"верир: ([0-9\.\,k]+)", - # "ПК гик" theme - r"потеряет: ([0-9\.\,k]+)", - # "Новогодняя" theme - r"Прибыль: ([0-9\.\,k]+)", - # UA theme [via trust] - r"([0-9\.\,k]+) біо-ресурса", - # RU theme [via trust] - r"Прибыль: ([0-9\.\,k]+)", - # EN theme [via trust] - r"([0-9\.\,k]+) pcs\.", - # idk what is theme [via trust] - r'приносит: ([0-9\.\,k]+)', - ) - default_infected_theme = r' на ([0-9\ ]+) д.*' - bio_infected_themes = ( - # UA theme - default_infected_theme, - # RU theme - default_infected_theme, - # EN theme - r' for ([0-9\ ]+) d.*', - # AZ theme - default_infected_theme, - # "ПК гик" theme - default_infected_theme, - # "Новогодняя" theme - default_infected_theme, - # UA theme [via trust] - default_infected_theme, - # RU theme [via trust] - default_infected_theme, - # EN theme [via trust] - default_infected_theme, - # idk what is theme [via trust] - default_infected_theme, - ) - default_pathogen_theme = r'Осталось: ([0-9\ ]+)' - bio_pathogen_theme = ( - default_pathogen_theme, - default_pathogen_theme, - r'Remaining: ([0-9\ ]+)', - default_pathogen_theme, - default_pathogen_theme, - default_pathogen_theme, - default_pathogen_theme, - default_pathogen_theme, - r'Remaining: ([0-9\ ]+)', - default_pathogen_theme, + (r'.* при помощи анонимуса атаковала.+', + r'приносит: ([0-9\.\,k]+)', + default_infected_days_theme, + default_pathogen_remaining_theme), ) if m.sender_id != 6333102398: @@ -282,7 +262,7 @@ async def main(): for theme in bio_attack_themes: trying_theme_index = bio_attack_themes.index(theme) logger.debug(f'trying theme {trying_theme_index}...') - r = re.findall(theme, h) + r = re.findall(theme[0], h) if r: logger.debug(f'found theme {trying_theme_index}') break @@ -296,8 +276,8 @@ async def main(): u2id = await get_id(u2url) # print(f'{u1url} [@{u1id}] подверг(ла) {u2url} [@{u2id}]')#показать when = int(datetime.timestamp(m.date)) - days = int(re.findall(bio_infected_themes[trying_theme_index], t)[0].replace(' ', '')) - experience = re.findall(bio_expr_themes[trying_theme_index], t)[0].strip() + days = int(re.findall(bio_attack_themes[trying_theme_index][2], t)[0].replace(' ', '')) + experience = re.findall(bio_attack_themes[trying_theme_index][1], t)[0].strip() if ',' in experience: experience = re.sub(r',', r'.', experience) if 'k' in experience: @@ -305,7 +285,7 @@ async def main(): float(re.sub('k', '', experience)) * 1000) else: exp_int = int(experience) - pathogen_remaining = int(re.findall(bio_pathogen_theme[trying_theme_index], t)[0]) + pathogen_remaining = int(re.findall(bio_attack_themes[trying_theme_index][3], t)[0]) if pathogen_remaining <= states.auto_bioeb_pathogen_threshold and u1id == my_id: states.auto_bioeb_sleep_interval = states.auto_bioeb_max_interval logger.warning(f'Interval bioeb changed (slow down): {states.auto_bioeb_sleep_interval}')