-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbot.py
53 lines (40 loc) · 1.47 KB
/
bot.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
49
50
51
52
53
import os
import toml
import disnake
import inspect
from disnake.ext import commands
import EventsCollectors
import StreamsCollectors
import EventsTransmitters
from utils import RedisClient, Config, TwitchClient
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from flask.logging import default_handler
import logging
formatter = logging.Formatter(
'[%(asctime)s] [%(module)s] '
'[%(levelname)s] %(message)s',
"%Y-%m-%d %H:%M:%S %z"
)
logger = logging.getLogger('community_events')
logger.setLevel(logging.INFO)
logger.addHandler(default_handler)
logger.handlers[0].setFormatter(formatter)
rclient = RedisClient(host=os.getenv('REDIS_HOST', 'cache'), port=os.getenv('REDIS_PORT', 6379))
tclient = TwitchClient(client_id=Config.TWITCH_CLIENT_ID, secret=Config.TWITCH_SECRET)
dclient = disnake.Client()
intents = disnake.Intents.all()
bot = disnake.ext.commands.InteractionBot(intents=intents)
sched = AsyncIOScheduler(daemon=True)
for name, obj in inspect.getmembers(EventsCollectors):
if inspect.isclass(obj):
events_collector = obj(bot, Config, sched, dclient, rclient)
if events_collector.valide_config:
bot.add_cog(events_collector)
for name, obj in inspect.getmembers(StreamsCollectors):
if inspect.isclass(obj):
obj(Config, sched, rclient, tclient)
for name, obj in inspect.getmembers(EventsTransmitters):
if inspect.isclass(obj):
obj(Config, sched, rclient)
sched.start()
bot.run(Config.DISCORD_BOT_TOKEN)