-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun_bot.py
91 lines (70 loc) · 2.18 KB
/
run_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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import argparse
import logging
import mysreality.db as db
import mysreality.bot as bot
import mysreality.api as api
import mysreality.assets as assets
import pathlib
import logging
def setup_logging(args, main_logger_name=None):
# external_loggers = ['httpx','apscheduler.scheduler','apscheduler.executors.default']
# for logger_name in external_loggers:
# ext_logger = logging.getLogger(logger_name)
# ext_logger.setLevel(args.logLevel)
logging.basicConfig(
level=args.loglevel,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
# this logger is always info
if main_logger_name:
logger = logging.getLogger("mysreality.telegram_bot")
logger.setLevel(logging.INFO)
def setup_argparse():
parser = argparse.ArgumentParser()
parser.add_argument(
"-d",
"--debug",
help="Print lots of debugging statements",
action="store_const",
dest="loglevel",
const=logging.DEBUG,
default=logging.WARNING,
)
parser.add_argument("--token", help="Token to telegram bot", required=True)
parser.add_argument("--root", help="Folder with estates data", required=True)
parser.add_argument(
"--interval",
help="Number of seconds the bot waits before sending another message.",
default=60,
type=int,
)
parser.add_argument(
"-v",
"--verbose",
help="Be verbose",
action="store_const",
dest="loglevel",
const=logging.INFO,
)
return parser
def main():
parser = setup_argparse()
args = parser.parse_args()
setup_logging(args, main_logger_name="mysreality.telegram_bot")
root = pathlib.Path(args.root)
reactions_dir = root / "user_reactions"
reactions_db = db.ReactionsDb(reactions_dir)
queue_dir = root / "queue"
queue = db.DiscoveredQueue(queue_dir)
reactions_map = assets.load_reactions_map()
params = bot.Param(
args.token,
reactions_db,
queue,
reactions_map,
interval=args.interval,
)
telegram_bot = bot.create_bot(params)
telegram_bot.run_polling()
if __name__ == "__main__":
main()