Compare commits

...

3 commits

Author SHA1 Message Date
Leander dbaec0332b
Updated autocredits.py 2023-08-07 14:55:53 +02:00
Leander 9b8ab4eced
Updated settings.py 2023-08-07 14:55:39 +02:00
Leander 3f1db2dd3e
Updated main.py 2023-08-07 14:55:17 +02:00
3 changed files with 44 additions and 52 deletions

View file

@ -2,11 +2,14 @@ async def get_all_users(client):
users = client['nova-core']['users'] users = client['nova-core']['users']
return users return users
async def update_credits(users, settings=None):
async def update_credits(pymongo_client, settings=None):
users = await get_all_users(pymongo_client)
if not settings: if not settings:
users.update_many({}, {"$inc": {"credits": 250}}) users.update_many({}, {"$inc": {"credits": 2500}})
else: else:
for key, value in settings.items(): for key, value in settings.items():
users.update_many({'role': key}, {"$inc": {"credits": int(value)}}) users.update_many(
print(f'Updated {key} to {value}') {'level': key}, {"$inc": {"credits": int(value)}})

View file

@ -1,59 +1,48 @@
import os
import asyncio import asyncio
import aiohttp
import pymongo
import autocredits
from dotenv import load_dotenv
from settings import roles from settings import roles
import autocredits
import aiohttp
from dotenv import load_dotenv
import os
import pymongo
load_dotenv() load_dotenv()
pymongo_client = pymongo.MongoClient(os.getenv('MONGO_URI')) CONNECTION_STRING = os.getenv("MONGO_URI")
async def main(): async def main():
users = await autocredits.get_all_users(pymongo_client) pymongo_client = pymongo.MongoClient(CONNECTION_STRING)
await update_roles(users) await update_roles(pymongo_client)
await autocredits.update_credits(users, roles) await autocredits.update_credits(pymongo_client, roles)
async def update_roles(users):
async def update_roles(pymongo_client):
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
try: try:
async with session.get('http://localhost:3224/get_roles') as response: async with session.get('http://0.0.0.0:3224/get_roles') as response:
discord_users = await response.json() data = await response.json()
except aiohttp.ClientError as e: except aiohttp.ClientError as e:
raise ValueError('Could not get roles.') from exc print(f"Error: {e}")
return
lvlroles = [f'lvl{lvl}' for lvl in range(10, 110, 10)] + ['']
lvlroles = [f"lvl{lvl}" for lvl in range(10, 110, 10)]
discord_users = data
users = await autocredits.get_all_users(pymongo_client) users = await autocredits.get_all_users(pymongo_client)
filtered_users = users.find({'role': {'$in': lvlroles}}) for user in users.find():
bulk_updates = []
for user in filtered_users:
discord = str(user['auth']['discord']) discord = str(user['auth']['discord'])
for id_, roles in discord_users.items(): for id_, roles in discord_users.items():
if id_ == discord: if id_ == discord:
for role in lvlroles: for role in lvlroles:
print(2, id_)
if role in roles: if role in roles:
print(0, id_) users.update_one({'auth.discord': int(discord)}, {
bulk_updates.append(pymongo.UpdateOne( '$set': {'level': role}})
{'auth.discord': int(discord)}, print(f"Updated {discord} to {role}")
{'$set': {'role': role}})
)
print(1, id_)
print(f'Updated {id_} to {role}')
break
if bulk_updates: return users
with pymongo_client:
users.bulk_write(bulk_updates)
if __name__ == "__main__": if __name__ == "__main__":
asyncio.run(main()) asyncio.run(main())

View file

@ -1,13 +1,13 @@
roles = { roles = {
'': '250', '': '2500',
'lvl10': '280', 'lvl10': '2800',
'lvl20': '310', 'lvl20': '3100',
'lvl30': '340', 'lvl30': '3400',
'lvl40': '370', 'lvl40': '3700',
'lvl50': '400', 'lvl50': '4000',
'lvl60': '430', 'lvl60': '4300',
'lvl70': '460', 'lvl70': '4600',
'lvl80': '490', 'lvl80': '4900',
'lvl90': '520', 'lvl90': '5200',
'lvl100': '550', 'lvl100': '5500',
} }