def main(settings: Settings, verbosity: int, shell: bool): """ Hero Wars game bot ЪЈє """ install_logging(verbosity) logger.info('Bot is starting.') with Session() as session, Database(constants.DATABASE_NAME) as db: session.mount('https://', HTTPAdapter(max_retries=5)) session.headers['User-Agent'] = constants.USER_AGENT telegram = Telegram(session, settings.telegram) if settings.telegram else None api = API(session, db, settings) bot = Bot(db, api, VK(session, settings), telegram, settings) bot.log('ЪјЅ лЉлЙЛѓ лил░л┐ЛЃЛЂл║л░лхЛѓЛЂЛЈРђд') api.prepare() bot.prepare() logger.info('Welcome ┬Ф{}┬╗!', bot.user.name) logger.info('Game time: {:%H:%M:%S %Z}', datetime.now(bot.user.tz)) logger.info('Next day: {:%H:%M:%S %Z}.', bot.user.next_day.astimezone(bot.user.tz)) bot.log(f'ЪјЅ *{bot.user.name}* лил░л┐ЛЃЛЂЛѓлИл╗ЛЂЛЈ!') if not shell: bot.run() else: IPython.embed()
def main(verbosity: int, n_splits: int, n_last_battles: int): """ Train and generate arena prediction model. """ bestmobabot.logging_.install_logging(verbosity) if not sys.warnoptions: warnings.simplefilter('ignore') with Database(constants.DATABASE_NAME) as db: Trainer(db, n_splits=n_splits, n_last_battles=n_last_battles).train()
def main(verbosity: int): """Test the solver on the pre-dumped data.""" bestmobabot.logging_.install_logging(verbosity) logger.info('Loading the dumps…') with Database(constants.DATABASE_NAME) as db: model: Model = pickle.loads(b85decode(db['bot:model'])) heroes: List[Hero] = pickle.loads( (Path('dumps') / 'heroes.pkl').read_bytes()) arena_enemies: List[ArenaEnemy] = pickle.loads( (Path('dumps') / 'arena_enemies.pkl').read_bytes()) grand_enemies: List[GrandArenaEnemy] = pickle.loads( (Path('dumps') / 'grand_enemies.pkl').read_bytes()) logger.info('') for enemy in arena_enemies: solution = ArenaSolver( db={}, model=model, user_clan_id=None, heroes=heroes, n_required_teams=1, max_iterations=0, n_keep_solutions=50, n_generate_solutions=100, n_generations_count_down=25, early_stop=0.95, get_enemies=list, friendly_clans=[], reduce_probabilities=reduce_normal_arena, callback=lambda: None, ).initialize().solve_enemy(enemy) logger.info('{}', solution) logger.info('') for enemy in grand_enemies: solution = ArenaSolver( db={}, model=model, user_clan_id=None, heroes=heroes, n_required_teams=constants.N_GRAND_TEAMS, max_iterations=0, n_keep_solutions=50, n_generate_solutions=500, n_generations_count_down=50, early_stop=0.95, get_enemies=list, friendly_clans=[], reduce_probabilities=reduce_grand_arena, callback=lambda: None, ).initialize().solve_enemy(enemy) logger.info('{}', solution)
def test_get_missing(): with pytest.raises(KeyError): Database(':memory:').__getitem__('missing_key')
def test_get_by_prefix(): db = Database(':memory:') db['foo:qux'] = 42 db['foo:quux'] = 43 assert list(db.get_by_prefix('foo')) == [('foo:qux', 42), ('foo:quux', 43)]
def test_set_replace(): db = Database(':memory:') db['foo'] = 42 db['foo'] = 43 assert db['foo'] == 43
def test_set(): db = Database(':memory:') db['foo'] = 42 assert db['foo'] == 42
def test_not_exists(): assert 'missing_key' not in Database(':memory:')
def test_exists(): db = Database(':memory:') db['foo'] = 42 assert 'foo' in db