Refactor Shop cog to improve role refund functionality by separating user and settings instances. Enhance inventory management for role items by ensuring user-specific checks and maintaining item data integrity during refunds.
Some checks are pending
Run pre-commit / Run pre-commit (push) Waiting to run
Some checks are pending
Run pre-commit / Run pre-commit (push) Waiting to run
This commit is contained in:
parent
12bd541b64
commit
928a21d810
1 changed files with 6 additions and 4 deletions
10
shop/shop.py
10
shop/shop.py
|
@ -407,7 +407,8 @@ class Shop(commands.Cog):
|
||||||
[p]shop refund VIP Role
|
[p]shop refund VIP Role
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
instance = await self.get_instance(ctx, settings=True)
|
settings = await self.get_instance(ctx, settings=True)
|
||||||
|
user_instance = await self.get_instance(ctx, user=ctx.author)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
return await ctx.send("You can't use this command in DMs when not in global mode.")
|
return await ctx.send("You can't use this command in DMs when not in global mode.")
|
||||||
|
|
||||||
|
@ -416,13 +417,14 @@ class Shop(commands.Cog):
|
||||||
role_name = None
|
role_name = None
|
||||||
shop_name = None
|
shop_name = None
|
||||||
|
|
||||||
async with instance.Shops() as shops:
|
async with settings.Shops() as shops:
|
||||||
for shop in shops.values():
|
for shop in shops.values():
|
||||||
for item_name, item_data in shop["Items"].items():
|
for item_name, item_data in shop["Items"].items():
|
||||||
if (item_name.lower() == item.lower() and
|
if (item_name.lower() == item.lower() and
|
||||||
item_data["Type"].lower() == "role"):
|
item_data["Type"].lower() == "role"):
|
||||||
role_item = item_name
|
role_item = item_name
|
||||||
role_name = item_data["Role"]
|
role_name = item_data["Role"]
|
||||||
|
item_data = deepcopy(item_data) # Store for later use
|
||||||
break
|
break
|
||||||
if role_item:
|
if role_item:
|
||||||
break
|
break
|
||||||
|
@ -482,14 +484,14 @@ class Shop(commands.Cog):
|
||||||
try:
|
try:
|
||||||
await ctx.author.remove_roles(role, reason="Shop role refund")
|
await ctx.author.remove_roles(role, reason="Shop role refund")
|
||||||
# Add the role item back to inventory
|
# Add the role item back to inventory
|
||||||
async with instance.Inventory() as inv:
|
async with user_instance.Inventory() as inv:
|
||||||
if role_item in inv:
|
if role_item in inv:
|
||||||
inv[role_item]["Qty"] += 1
|
inv[role_item]["Qty"] += 1
|
||||||
else:
|
else:
|
||||||
inv[role_item] = {
|
inv[role_item] = {
|
||||||
"Qty": 1,
|
"Qty": 1,
|
||||||
"Type": "role",
|
"Type": "role",
|
||||||
"Info": f"Grants the {role.name} role",
|
"Info": item_data["Info"],
|
||||||
"Role": role_name
|
"Role": role_name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue