4 from racetime_bot import Bot, RaceHandler
6 class AosrRaceHandler(RaceHandler):
8 stop_at = ['cancelled', 'finished']
10 async def begin(self):
11 if self.should_stop():
13 if not self.state.get('intro_sent') and not self._race_in_progress():
14 await self.send_message(
15 'Welcome to AoSR! Create a seed with !preset <preset> or !race <preset>'
17 self.state['intro_sent'] = True
19 async def ex_preset(self, args, message):
23 await self.send_message(
24 'You must specify a preset!'
27 await self.roll_game(preset_name, race=False)
29 async def ex_race(self, args, message):
33 await self.send_message(
34 'You must specify a preset!'
37 await self.roll_game(preset_name, race=True)
39 async def roll_game(self, preset_name, race=False):
40 await self.send_message('Generating game, please wait.')
41 params = { 'preset': preset_name, 'race': '1' if race else '0' }
43 response = requests.post('https://aos.localhorst.tv/api/aos-generate', data=params, headers={ 'Accept': 'application/json' })
44 if response.status_code == 404:
45 await self.send_message(
49 response.raise_for_status()
50 except requests.exceptions.RequestException as e:
52 await self.send_message(
53 'error generating seed'
56 json = response.json();
57 await self.send_message(
58 'Seed: https://aos.localhorst.tv/h/%(hash)s' % json
60 await self.set_bot_raceinfo('%(preset)s - https://aos.localhorst.tv/h/%(hash)s' % json)
62 def _race_in_progress(self):
63 return self.data.get('status').get('value') in ('pending', 'in_progress')
67 def get_handler_class(self):
68 return AosrRaceHandler
70 logger = logging.getLogger()
74 client_id='2NUPncWc83ygvx3TZyCuCYgdlrwogAvHf6rYYnHz',
75 client_secret='j5XN5gcQzWJiS25R4dhQquSREgYdlDJgTbvAMhyHGbnK3ROHsXpOzl0JUIHLU1n91qIOfzkiJN864RICWTBi9pnNIrkvvWNtZH77FC39QnABQ5CNPW0YWPpjC8M0f9hb',