1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/usr/bin/env python3
- import logging
- from logging.config import dictConfig
- import atexit
- import discord
- import discord.utils
- import db
- from util import find_all_subclasses
- from config import get_config, get_secret
- from rollbot import Rollbot
- from command_system import RollbotMessage, RollbotPlugin
- import plugins
- dictConfig({
- 'version': 1,
- 'disable_existing_loggers': False,
- 'formatters': {
- 'default': {'format': '%(asctime)s - %(levelname)s - %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S'}
- },
- 'handlers': {
- 'console': {
- 'level': 'INFO',
- 'formatter': 'default',
- 'class': 'logging.StreamHandler',
- 'stream': 'ext://sys.stdout',
- },
- },
- 'loggers': {
- '': {
- 'handlers': ['console'],
- 'level': 'INFO',
- 'propagate': True
- },
- }
- })
- client = discord.Client()
- msg_queue = []
- rollbot = Rollbot(
- logger=logging,
- plugin_classes=find_all_subclasses(RollbotPlugin),
- aliases=get_config("aliases"),
- responses=get_config("responses"),
- callback=lambda msg, channel_id: msg_queue.append((msg, discord.utils.get(client.get_all_channels(), id=int(channel_id)))),
- session_factory=db.session_scope
- )
- rollbot.logger.info("Initializing database tables")
- db.init_db()
- rollbot.logger.info("Finished initializing database")
- rollbot.start_plugins()
- atexit.register(rollbot.shutdown_plugins)
- @client.event
- async def on_message(message):
- msg = RollbotMessage.from_discord(message) # TODO admins
- rollbot.handle_command(msg)
- while len(msg_queue) > 0:
- content, channel = msg_queue.pop()
- await channel.send(content)
- if __name__ == "__main__":
- client.run(get_secret("discord_token"))
|