-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathsahasrahbot.py
48 lines (37 loc) · 1.4 KB
/
sahasrahbot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import asyncio
import urllib.parse
import sentry_sdk
from sentry_sdk.integrations.aiohttp import AioHttpIntegration
from tortoise import Tortoise
import config
from alttprbot.exceptions import SahasrahBotException
from alttprbot_api.api import sahasrahbotapi
from alttprbot_audit.bot import start_bot as start_audit_bot
from alttprbot_discord.bot import start_bot as start_discord_bot
from alttprbot_racetime.bot import start_racetime
if config.SENTRY_URL:
def before_send(event, hint):
if 'exc_info' in hint:
_, exc_value, _ = hint['exc_info']
if isinstance(exc_value, (SahasrahBotException)):
return None
return event
sentry_sdk.init(
config.SENTRY_URL,
integrations=[AioHttpIntegration()],
before_send=before_send
)
async def database():
await Tortoise.init(
db_url=f'mysql://{config.DB_USER}:{urllib.parse.quote_plus(config.DB_PASS)}@{config.DB_HOST}:{config.DB_PORT}/{config.DB_NAME}',
modules={'models': ['alttprbot.models']}
)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
dbtask = loop.create_task(database())
loop.run_until_complete(dbtask)
loop.create_task(start_discord_bot())
loop.create_task(start_audit_bot())
start_racetime(loop)
loop.create_task(sahasrahbotapi.run(host='127.0.0.1', port=5001, use_reloader=False, loop=loop))
loop.run_forever()