-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
63 lines (46 loc) · 1.78 KB
/
main.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
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python3
import argparse
import logging
import sys
from khl import Bot
from bot.commands import reg_cmds
from bot.configs.bot_config import settings
from bot.tasks import reg_tasks
def debugger_is_active() -> bool:
debug = hasattr(sys, 'gettrace') and sys.gettrace() is not None
return debug
# Parse arguments
parser = argparse.ArgumentParser(
description="Simple template KOOK bot.",
epilog="Check the repo for details: https://github.com/dadahsueh/zakook-bot")
parser.add_argument('-t', '--token', type=str, help='Authentication token')
parser.add_argument('-v', '--verbose', action='count', default=0, help='Increase verbosity level (e.g., -v, -vv, -vvv)')
parser.add_argument('-cf', type=str, help='Cloudflare Worker url (e.g. https://xxxworker.xxxname.workers.dev/')
args = parser.parse_args()
# Configure logging
log_level = logging.INFO
if debugger_is_active() or args.verbose >= 1:
log_level = logging.DEBUG
logger = logging.getLogger(settings.BOT_NAME)
logging.basicConfig(level=log_level, format='%(asctime)s -%(name)-24s:%(levelname)-8s-%(message)s')
logger.info(f'{settings.BOT_NAME} version {settings.BOT_VERSION} {log_level}')
# Configure Cloudflare Worker
# Arguments first, fallback ENV Settings
if args.cf and len(args.cf) > 0:
# Overrides
settings.cf = args.cf
settings.cf_enabled = True
elif settings.cf and len(settings.cf) > 0:
settings.cf_enabled = True
logger.debug(f'Config >> {settings.model_dump()}')
# Configure token
if args.token:
token = args.token # Use token from command line argument if provided
else:
token = settings.token # Use default token from settings module
# Configure bot
bot = Bot(token=token)
reg_cmds.register_cmds(bot)
reg_tasks.register_tasks(bot)
if __name__ == '__main__':
bot.run()