]> git.localhorst.tv Git - aosr-racetime.git/blob - bot.py
dummy bot
[aosr-racetime.git] / bot.py
1 import logging
2 import requests
3
4 from racetime_bot import Bot, RaceHandler
5
6 class AosrRaceHandler(RaceHandler):
7
8     stop_at = ['cancelled', 'finished']
9
10     async def begin(self):
11         if self.should_stop():
12             return
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>'
16             )
17             self.state['intro_sent'] = True
18
19     async def ex_preset(self, args, message):
20         try:
21             preset_name = args[0]
22         except IndexError:
23             await self.send_message(
24                 'You must specify a preset!'
25             )
26             return
27         await self.roll_game(preset_name, race=False)
28
29     async def ex_race(self, args, message):
30         try:
31             preset_name = args[0]
32         except IndexError:
33             await self.send_message(
34                 'You must specify a preset!'
35             )
36             return
37         await self.roll_game(preset_name, race=True)
38
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' }
42         try:
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(
46                     'unknown preset'
47                 )
48                 return
49             response.raise_for_status()
50         except requests.exceptions.RequestException as e:
51             print(e)
52             await self.send_message(
53                 'error generating seed'
54             )
55             return
56         json = response.json();
57         await self.send_message(
58             'Seed: https://aos.localhorst.tv/h/%(hash)s' % json
59         )
60         await self.set_bot_raceinfo('%(preset)s - https://aos.localhorst.tv/h/%(hash)s' % json)
61
62     def _race_in_progress(self):
63         return self.data.get('status').get('value') in ('pending', 'in_progress')
64
65 class AosrBot(Bot):
66
67     def get_handler_class(self):
68         return AosrRaceHandler
69
70 logger = logging.getLogger()
71
72 bot = AosrBot(
73     category_slug='aosr',
74     client_id='2NUPncWc83ygvx3TZyCuCYgdlrwogAvHf6rYYnHz',
75     client_secret='j5XN5gcQzWJiS25R4dhQquSREgYdlDJgTbvAMhyHGbnK3ROHsXpOzl0JUIHLU1n91qIOfzkiJN864RICWTBi9pnNIrkvvWNtZH77FC39QnABQ5CNPW0YWPpjC8M0f9hb',
76     logger=logger,
77 )
78 bot.run()