The 4th or so re-imagining of the once crucial j4lp jabberbot.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
1.2 KiB

import asyncio
import contextlib
import logging
import click
from bot import Rooster
@contextlib.contextmanager
def setup_logging():
try:
# __enter__
logging.getLogger("discord").setLevel(logging.INFO)
logging.getLogger("discord.http").setLevel(logging.WARNING)
log = logging.getLogger()
log.setLevel(logging.INFO)
handler = logging.FileHandler(
filename="Rooster.log", encoding="utf-8", mode="w"
)
dt_fmt = "%Y-%m-%d %H:%M:%S"
fmt = logging.Formatter(
"[{asctime}] [{levelname:<7}] {name}: {message}", dt_fmt, style="{"
)
handler.setFormatter(fmt)
log.addHandler(handler)
yield
finally:
# __exit__
handlers = log.handlers[:]
for hdlr in handlers:
hdlr.close()
log.removeHandler(hdlr)
def run_bot():
loop = asyncio.get_event_loop()
log = logging.getLogger()
bot = Rooster()
bot.run()
@click.group(invoke_without_command=True)
@click.pass_context
def main(ctx):
if ctx.invoked_subcommand is None:
loop = asyncio.get_event_loop()
with setup_logging():
run_bot()
if __name__ == "__main__":
main()