Fixed credit system?

This commit is contained in:
nsde 2023-08-19 13:30:46 +02:00
parent c07af0aed8
commit 596861d2ee
4 changed files with 44 additions and 15 deletions

12
api/db/helpers.py Normal file
View file

@ -0,0 +1,12 @@
import os
def find_project_root():
current_path = os.getcwd()
while not os.path.isfile(os.path.join(current_path, 'LICENSE')):
current_path = os.path.dirname(current_path)
return current_path
root = find_project_root()
if __name__ == '__main__':
print(find_project_root())

View file

@ -7,9 +7,14 @@ import asyncio
from dotenv import load_dotenv
from motor.motor_asyncio import AsyncIOMotorClient
try:
from . import helpers
except ImportError:
import helpers
load_dotenv()
with open('config/config.yml', encoding='utf8') as f:
with open(helpers.root + '/api/config/config.yml', encoding='utf8') as f:
credits_config = yaml.safe_load(f)
## MONGODB Setup
@ -36,7 +41,8 @@ class UserManager:
return self.conn[os.getenv('MONGO_NAME', 'nova-test')][collection_name]
async def get_all_users(self):
return self.conn[os.getenv('MONGO_NAME', 'nova-test')]['users']
collection = self.conn[os.getenv('MONGO_NAME', 'nova-test')]['users']
return collection#.find()
async def create(self, discord_id: str = '') -> dict:
chars = string.ascii_letters + string.digits

View file

@ -1,17 +1,22 @@
import os
import sys
# Weird hack because PYTHON IS GOOD LANGUAGE :))))
sys.path.append('../')
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(project_root)
from api.db.users import UserManager
async def update_credits(pymongo_client, settings=None):
manager = UserManager()
users = await manager.get_all_users(pymongo_client)
async def update_credits(settings=None):
users = await manager.get_all_users()
if not settings:
users.update_many({}, {'$inc': {'credits': 2500}})
await users.update_many({}, {'$inc': {'credits': 2500}})
else:
for key, value in settings.items():
users.update_many(
await users.update_many(
{'level': key}, {'$inc': {'credits': int(value)}})
get_all_users = manager.get_all_users

View file

@ -9,13 +9,14 @@ from settings import roles
from dotenv import load_dotenv
load_dotenv()
async def main():
mongo = pymongo.MongoClient(os.getenv('MONGO_URI'))
await update_roles(mongo)
await autocredits.update_credits(mongo, roles)
await update_roles()
await autocredits.update_credits(roles)
async def update_roles(mongo):
async def update_roles():
async with aiohttp.ClientSession() as session:
try:
async with session.get('http://0.0.0.0:3224/get_roles') as response:
@ -25,9 +26,15 @@ async def update_roles(mongo):
return
level_role_names = [f'lvl{lvl}' for lvl in range(10, 110, 10)]
users = await autocredits.get_all_users(mongo)
users = await autocredits.get_all_users()
users = users.find({})
users = await users.to_list(length=None)
for user in users:
if not 'auth' in user:
continue
for user in users.find():
discord = str(user['auth']['discord'])
for user_id, role_names in discord_users.items():
@ -48,6 +55,5 @@ def launch():
with open('rewards/last_update.txt', 'w') as f:
f.write(str(time.time()))
if __name__ == '__main__':
launch()