__init__.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. """
  2. Initialize the modules needed for the website
  3. """
  4. import os
  5. import discord
  6. from flask import Flask
  7. from flask_sqlalchemy import SQLAlchemy
  8. from flask_migrate import Migrate
  9. from flask_login import LoginManager
  10. from flask_compress import Compress
  11. from flask_argon2 import Argon2
  12. from flask_menu import Menu
  13. from dotenv import load_dotenv
  14. from flask_apscheduler import APScheduler
  15. from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
  16. load_dotenv()
  17. class Config(object):
  18. """Flask configuration"""
  19. UPLOAD_FOLDER = 'app/static/uploads'
  20. SCHEDULER_API_ENABLED = True
  21. SQLALCHEMY_DATABASE_URI = os.environ["DATABASE_URI"]
  22. SECRET_KEY = os.environ["SECRET_KEY"]
  23. SQLALCHEMY_TRACK_MODIFICATIONS = False
  24. SEND_FILE_MAX_AGE_DEFAULT = 1296000
  25. app = Flask(__name__)
  26. app.config.from_object(Config())
  27. app.jinja_env.lstrip_blocks = True
  28. app.jinja_env.trim_blocks = True
  29. app.config['TESTING'] = False
  30. # Compress settings
  31. COMPRESS_MIMETYPES = [
  32. 'text/html',
  33. 'text/css',
  34. 'text/xml',
  35. 'application/json',
  36. 'application/javascript'
  37. ]
  38. COMPRESS_LEVEL = 6
  39. COMPRESS_MIN_SIZE = 500
  40. Compress(app)
  41. Menu(app=app)
  42. db = SQLAlchemy(app)
  43. migrate = Migrate(app, db)
  44. argon2 = Argon2(app)
  45. scheduler = APScheduler()
  46. scheduler.init_app(app)
  47. # Login
  48. login_manager = LoginManager()
  49. login_manager.init_app(app)
  50. login_manager.login_view = "auth.login"
  51. login_manager.login_message_category = "warning"
  52. class DiscordClient(discord.Client):
  53. """Class for Discord bot"""
  54. async def on_ready(self):
  55. """Send message after login"""
  56. print('Logged on as', self.user)
  57. async def on_message(self, message):
  58. """Read message"""
  59. # don't respond to ourselves
  60. if message.author == self.user:
  61. return
  62. if message.content == 'ping':
  63. await message.channel.send('pong')
  64. discord_client = DiscordClient()
  65. discord_client.run(os.environ["DISCORD_TOKEN"])