implemented DM when it's time to BeReal.
This commit is contained in:
parent
540a61fb45
commit
7de887038d
12
bot/app.py
12
bot/app.py
@ -1,3 +1,4 @@
|
||||
import time
|
||||
import discord, asyncio
|
||||
import os
|
||||
from discord.ext import commands
|
||||
@ -11,13 +12,22 @@ intents.dm_messages = True
|
||||
app = commands.Bot(command_prefix=",", intents=intents)
|
||||
app.db = database.controller.Database("database.db")
|
||||
|
||||
|
||||
# load cogs
|
||||
async def load_cogs():
|
||||
for filename in os.listdir("bot/commands"):
|
||||
if filename.endswith(".py"):
|
||||
await app.load_extension(f"bot.commands.{filename[:-3]}")
|
||||
|
||||
async def time_to_bereal():
|
||||
# Get subscribers
|
||||
subscribers = app.db.get_subscribers()
|
||||
|
||||
# Send message to all subscribers
|
||||
for subscriber in subscribers:
|
||||
user = await app.fetch_user(subscriber.user_id)
|
||||
await user.send(f"# :warning: It's time to BeReal.\nOpen BeReal. to post what you are doing right now.\n<t:{int(time.time())}:R>")
|
||||
|
||||
app.time_to_bereal = time_to_bereal
|
||||
|
||||
@app.event
|
||||
async def on_ready():
|
||||
|
@ -24,7 +24,7 @@ class Database:
|
||||
|
||||
def get_subscribers(self):
|
||||
cursor = db.cursor()
|
||||
cursor.execute("SELECT user_id FROM subscribers")
|
||||
cursor.execute("SELECT * FROM subscribers")
|
||||
result = cursor.fetchall()
|
||||
return [Subscriber(id=row[0], user_id=row[1], since=row[2]) for row in result]
|
||||
|
||||
|
5
main.py
5
main.py
@ -4,14 +4,15 @@ from dotenv import load_dotenv
|
||||
load_dotenv()
|
||||
|
||||
from bot.app import app
|
||||
from webserver.webapp import webapp
|
||||
from webserver.webapp import WebServer
|
||||
|
||||
PORT = os.environ.get("PORT")
|
||||
|
||||
|
||||
@app.listen()
|
||||
async def on_ready():
|
||||
app.loop.create_task(webapp.run_task("0.0.0.0", PORT))
|
||||
webapp = WebServer(app)
|
||||
webapp.start(loop=app.loop)
|
||||
|
||||
|
||||
app.run(os.environ.get("DISCORD_TOKEN"))
|
||||
|
@ -1,19 +0,0 @@
|
||||
from quart import Blueprint, render_template, jsonify, request
|
||||
|
||||
bereal_time = Blueprint("bereal_time", __name__, template_folder="templates")
|
||||
|
||||
|
||||
@bereal_time.route("/post", methods=["POST"])
|
||||
async def time_to_bereal():
|
||||
# May be coming from those IPs:
|
||||
# 66.228.40.136 (us-east1.dbsrv.net)
|
||||
# 2600:3c03::f03c:92ff:febe:a263/64
|
||||
# fe80::f03c:92ff:febe:a263/64
|
||||
|
||||
data = await request.get_json()
|
||||
return {"error": 200, "message": "Success"}
|
||||
|
||||
|
||||
@bereal_time.errorhandler(405)
|
||||
async def method_not_allowed(e):
|
||||
return jsonify({"error": 405, "message": "Method not allowed"}), 405
|
@ -1,6 +1,32 @@
|
||||
from quart import Quart
|
||||
from discord.ext import commands
|
||||
import asyncio
|
||||
import os, dotenv
|
||||
|
||||
dotenv.load_dotenv()
|
||||
|
||||
from quart import request, jsonify
|
||||
class WebServer:
|
||||
def __init__(self, bot: commands.Bot):
|
||||
self.bot = bot
|
||||
|
||||
webserver = Quart(__name__)
|
||||
|
||||
@webserver.route("/time_to_bereal/post", methods=["POST"])
|
||||
async def time_to_bereal():
|
||||
# May be coming from those IPs:
|
||||
# 66.228.40.136 (us-east1.dbsrv.net)
|
||||
# 2600:3c03::f03c:92ff:febe:a263/64
|
||||
# fe80::f03c:92ff:febe:a263/64
|
||||
|
||||
data = await request.get_json()
|
||||
|
||||
task = asyncio.create_task(self.bot.time_to_bereal()) # Start asynchronous processing
|
||||
return jsonify({"error": 200, "message": "Success"})
|
||||
|
||||
self.webserver = webserver
|
||||
|
||||
def start(self, loop):
|
||||
loop.create_task(self.webserver.run_task("0.0.0.0", os.environ.get('PORT'), False))
|
||||
|
||||
from webserver.page.bereal_time import bereal_time
|
||||
|
||||
webapp = Quart(__name__)
|
||||
webapp.register_blueprint(bereal_time, url_prefix="/time_to_bereal")
|
||||
|
Loading…
Reference in New Issue
Block a user