app.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import atexit
  2. from logging.config import dictConfig
  3. from threading import Thread
  4. from flask import Flask, request, render_template, jsonify
  5. import db
  6. from config import BOTS_LOOKUP, GLOBAL_ADMINS, GROUP_ADMINS, get_config
  7. from command_system import RollbotMessage, RollbotResponse, RollbotFailure
  8. from rollbot import Rollbot
  9. from util import post_message
  10. dictConfig({
  11. "version": 1,
  12. "formatters": {"default": {
  13. "format": "[%(asctime)s] %(levelname)s in %(module)s: %(message)s",
  14. }},
  15. "handlers": {"wsgi": {
  16. "class": "logging.StreamHandler",
  17. "stream": "ext://flask.logging.wsgi_errors_stream",
  18. "formatter": "default"
  19. }},
  20. "root": {
  21. "level": "INFO",
  22. "handlers": ["wsgi"]
  23. }
  24. })
  25. app = Flask(__name__)
  26. app.config["PROPAGATE_EXCEPTIONS"] = True
  27. rollbot = Rollbot(
  28. app.logger,
  29. plugins=get_config("plugins"),
  30. aliases=get_config("aliases"),
  31. responses=get_config("responses"),
  32. lookup=BOTS_LOOKUP,
  33. sleep_time=float(get_config("sleep_time"))
  34. )
  35. app.logger.info("Initializing database tables")
  36. db.init_db()
  37. app.logger.info("Finished initializing database")
  38. rollbot.start_plugins()
  39. atexit.register(rollbot.shutdown_plugins)
  40. @app.route("/teamspeak", methods=["GET"])
  41. def teamspeak():
  42. response = rollbot.run_command(RollbotMessage("MANUAL", None, None, None, None, "!teamspeak", False))
  43. if response.is_success:
  44. response = response.txt
  45. else:
  46. response = response.failure_msg
  47. return render_template("teamspeak.html", r=response, scrolling=get_config("teamspeak.scrolling"))
  48. @app.route("/rollbot", methods=["POST"])
  49. def execute():
  50. json = request.get_json()
  51. msg = RollbotMessage.from_groupme(json, global_admins=GLOBAL_ADMINS, group_admins=GROUP_ADMINS)
  52. rollbot.handle_command_threaded(msg)
  53. return "", 204
  54. if __name__ == "__main__":
  55. app.run(host="0.0.0.0", port=6070)