2023-11-25 15:47:09 +00:00
|
|
|
from motor.motor_asyncio import AsyncIOMotorClient
|
|
|
|
|
|
|
|
from Christmas.config import ChristmasConfig
|
|
|
|
|
2023-11-26 04:27:34 +00:00
|
|
|
class MongoDBClient:
|
2023-11-25 15:47:09 +00:00
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.config = ChristmasConfig()
|
2023-11-26 04:27:34 +00:00
|
|
|
self.client = AsyncIOMotorClient(self.config.DATABASE["HOST"], int(self.config.DATABASE["PORT"]), username=self.config.DATABASE["USERNAME"], password=self.config.DATABASE["PASSWORD"])[self.config.DATABASE["DATABASE"]]
|
|
|
|
|
|
|
|
async def connect(self):
|
|
|
|
return self.client
|
|
|
|
|
|
|
|
class database:
|
|
|
|
|
|
|
|
async def get_guild(guild_id: int) -> dict:
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
return await conn.guild.find_one({"_id": guild_id})
|
|
|
|
|
|
|
|
async def register_guild(guild_id: int) -> None:
|
|
|
|
conn = await MongoDBClient().connect()
|
2023-12-03 10:06:21 +00:00
|
|
|
await conn.guild.insert_one({"_id": guild_id, "admin_run": False, "music": True})
|
2023-12-10 17:25:45 +00:00
|
|
|
async def leave_guild(guild_id: int) -> None:
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
await conn.guild.delete_one({"_id": guild_id})
|
2023-11-26 04:27:34 +00:00
|
|
|
|
2023-11-26 15:27:32 +00:00
|
|
|
async def insert_mail(send_user_id: int, user_id: int, user_name: str, mail_title: str, mail_content: str):
|
2023-11-26 04:27:34 +00:00
|
|
|
try:
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
mail_title = f"""{mail_title}"""
|
|
|
|
mail_content = f"""{mail_content}"""
|
|
|
|
if await conn.mail.find_one({"_id": user_id}) == None:
|
2023-11-26 15:27:32 +00:00
|
|
|
await conn.mail.insert_one({"_id": user_id, "mails": [{"userid": send_user_id, "username": user_name, "title": mail_title, "content": mail_content, "edited": False}]})
|
2023-11-26 04:27:34 +00:00
|
|
|
else:
|
2023-11-26 15:27:32 +00:00
|
|
|
result = await conn.mail.update_one({"_id": user_id}, {"$push": {"mails": {"userid": send_user_id, "username": user_name, "title": mail_title, "content": mail_content, "edited": False}}})
|
|
|
|
print(result)
|
2023-11-26 04:27:34 +00:00
|
|
|
except Exception as e:
|
|
|
|
print(e)
|
|
|
|
|
2023-11-26 15:27:32 +00:00
|
|
|
async def update_inserted_mail(send_user_id: int, user_id: int, mail_title: str, mail_content: str):
|
|
|
|
try:
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
await conn.mail.update_one({"_id": user_id, "mails.userid": send_user_id}, {"$set": {"mails.$.title": mail_title, "mails.$.content": mail_content, "mails.$.edited": True}})
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
|
|
print(e)
|
|
|
|
return None
|
|
|
|
|
|
|
|
async def get_instered_mail_edited(send_user_id: int, user_id: int):
|
|
|
|
try:
|
|
|
|
conn = await MongoDBClient().connect()
|
2023-12-02 06:03:50 +00:00
|
|
|
data = await conn.mail.find_one({"_id": user_id})
|
|
|
|
if data == None: return None
|
|
|
|
for mail in data["mails"]:
|
|
|
|
if mail["userid"] == send_user_id:
|
|
|
|
return mail["edited"]
|
2023-11-26 15:27:32 +00:00
|
|
|
except Exception as e:
|
|
|
|
print(e)
|
|
|
|
return None
|
|
|
|
|
|
|
|
async def get_mail(user_id: int):
|
2023-11-26 04:27:34 +00:00
|
|
|
conn = await MongoDBClient().connect()
|
2023-11-26 15:27:32 +00:00
|
|
|
data = await conn.mail.find_one({"_id": user_id})
|
|
|
|
if data == None: return None
|
|
|
|
return data
|
2023-11-26 04:27:34 +00:00
|
|
|
|
2023-11-26 15:27:32 +00:00
|
|
|
async def get_mail_user(one_user_id: int, two_user_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
data = await conn.mail.find_one({"_id": one_user_id})
|
|
|
|
if data == None: return False
|
|
|
|
for mail in data["mails"]:
|
|
|
|
if mail["userid"] == two_user_id:
|
|
|
|
return True
|
2023-12-02 10:42:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
async def register_arcade(guild_id: int, guild_name: str, region):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
await conn.arcade.insert_one({"_id": guild_id, "guild_name": guild_name, "region": region, "normal_snowball": 10000})
|
|
|
|
|
|
|
|
async def update_guild_name(guild_id: int, guild_name: str):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
await conn.arcade.update_one({"_id": guild_id}, {"$set": {"guild_name": guild_name}})
|
|
|
|
|
|
|
|
async def get_arcade(guild_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
return await conn.arcade.find_one({"_id": guild_id})
|
2023-12-03 10:06:21 +00:00
|
|
|
|
|
|
|
async def update_music_setting(guild_id: int, value: bool, setting: str):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
if setting == "music":
|
|
|
|
await conn.guild.update_one({"_id": guild_id}, {"$set": {"music": value}})
|
|
|
|
elif setting == "admin_run":
|
|
|
|
await conn.guild.update_one({"_id": guild_id}, {"$set": {"admin_run": value}})
|
2023-12-06 10:49:31 +00:00
|
|
|
|
|
|
|
async def insert_arcade_point(guild_id: int, user_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
2023-12-10 15:13:31 +00:00
|
|
|
if await conn.arcadepre.find_one({"_id": guild_id}) == None:
|
|
|
|
await conn.arcadepre.insert_one({"_id": guild_id, "user": [{"_id": user_id, "point": 1}], "vote": 0})
|
|
|
|
else:
|
|
|
|
await conn.arcadepre.update_one({"_id": guild_id}, {"$inc": {"user.$[elem].point": 1}}, array_filters=[{"elem._id": user_id}])
|
|
|
|
|
|
|
|
async def insert_guild_art_point(guild_id: int, amount: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
if await conn.guild.find_one({"_id": guild_id}) == None:
|
|
|
|
await conn.guild.insert_one({"_id": guild_id, "art_point": 1})
|
|
|
|
else:
|
|
|
|
await conn.guild.update_one({"_id": guild_id}, {"$inc": {"art_point": amount}})
|
|
|
|
|
|
|
|
async def use_guild_art_point(guild_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
if await conn.guild.find_one({"_id": guild_id, "art_point": {"$gt": 0}}) == None:
|
|
|
|
return False
|
|
|
|
await conn.guild.update_one({"_id": guild_id}, {"$inc": {"art_point": -1}})
|
|
|
|
return True
|
|
|
|
|
|
|
|
async def get_guild_art_point(guild_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
if await conn.guild.find_one({"_id": guild_id, "art_point": {"$exists": True}}) == None:
|
|
|
|
return 0
|
|
|
|
else:
|
|
|
|
result = await conn.guild.find_one({"_id": guild_id})
|
|
|
|
return result["art_point"]
|
|
|
|
|
|
|
|
async def get_use_art(guild_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
if await conn.guild.find_one({"_id": guild_id, "art": {"$exists": True}}) == None:
|
|
|
|
return 0
|
|
|
|
else:
|
|
|
|
result = await conn.guild.find_one({"_id": guild_id})
|
|
|
|
return result["art"]
|
|
|
|
|
|
|
|
async def put_use_art(guild_id: int):
|
|
|
|
conn = await MongoDBClient().connect()
|
|
|
|
if await conn.guild.find_one({"_id": guild_id, "art": {"$exists": True}}) == None:
|
|
|
|
await conn.guild.update_one({"_id": guild_id}, {"$set": {"art": 1}})
|
|
|
|
else:
|
|
|
|
await conn.guild.update_one({"_id": guild_id}, {"$inc": {"art": 1}})
|