Skip to content

Commit f5bf128

Browse files
AmbratolmAmbratolm
authored andcommitted
Implemented buy/bag commands & minor improvments
1 parent 3fab401 commit f5bf128

File tree

13 files changed

+315
-105
lines changed

13 files changed

+315
-105
lines changed

β€Žbot/cogs/chat_cogs/ai_cog.pyβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
# ----------------------------------------------------------------------------------------------------
2828
# * AI Cog
2929
# ----------------------------------------------------------------------------------------------------
30-
class AiCog(Cog, description="Integrated generative AI chat bot."):
30+
class AiCog(Cog, description="Integrated generative AI chat bot"):
3131
CONFIG_PATH = Path(__file__).parent / "ai_cog.toml"
3232
MAX_ACTORS = 10
3333
COOLDOWN_TIME = 60 # 1 min

β€Žbot/cogs/chat_cogs/filter_cog.pyβ€Ž

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from discord import Member, Message
55
from discord.ext.commands import Cog
6+
from humanize import naturaltime, precisedelta
67
from profanity_check import predict_prob
78

89
from bot.main import ActBot
@@ -16,9 +17,9 @@
1617
# ----------------------------------------------------------------------------------------------------
1718
# * Filter Cog
1819
# ----------------------------------------------------------------------------------------------------
19-
class FilterCog(Cog, description="Filters blacklisted message content."):
20+
class FilterCog(Cog, description="Filter blacklisted message content."):
2021
TOLERANCE = 0.99 # 99 %
21-
MAX_OFFENSES = 5
22+
MAX_OFFENSES = 1
2223
GOLD_PENALTY = 500
2324

2425
def __init__(self, bot: ActBot):
@@ -54,8 +55,6 @@ async def on_message(self, message: Message):
5455
censored_message = await message.channel.send(embed=embed)
5556

5657
# Accumulate offenses to detect abuse
57-
if member.guild_permissions.administrator:
58-
return
5958
self.offenses[member.id] += 1
6059
if self.offenses[member.id] < FilterCog.MAX_OFFENSES:
6160
return
@@ -75,22 +74,23 @@ async def on_message(self, message: Message):
7574
self.offenses[member.id] = 0
7675

7776
# Penalize by timeout (if insufficient gold)
77+
time = 0
7878
if debt_gold:
7979
time = timedelta(seconds=int(0.5 * debt_gold)) # 0.5 seconds per gold
80-
await member.timeout(time, reason="Filter")
80+
if not member.guild_permissions.administrator:
81+
await member.timeout(time, reason="Repeated use of offensive language")
8182

8283
# Notice
8384
embed = EmbedX.error(
8485
emoji="🚨",
8586
title="Penalty",
8687
description=f"{member.mention} has been penalized for repeated use of offensive language.",
8788
)
88-
embed.add_field(name="", value="", inline=False)
8989
embed.add_field(name="Gold πŸ”»", value=f"πŸ’° **-{self.GOLD_PENALTY}**")
9090
if debt_gold:
9191
embed.add_field(
92-
name=f"Timeout Activated ❗",
93-
value=f"⏳ **{time}**\nπŸ’° **{debt_gold}** _Debt Converted_",
92+
name=f"Timeout",
93+
value=f"⏳ **{precisedelta(time)}**\n-# **πŸ’° {debt_gold}** Debt Converted",
9494
)
9595
embed.set_thumbnail(url=member.display_avatar.url)
9696
await censored_message.reply(

β€Žbot/cogs/console_cog.pyβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# ----------------------------------------------------------------------------------------------------
1010
# * Console Cog
1111
# ----------------------------------------------------------------------------------------------------
12-
class ConsoleCog(Cog, description="Provides control and management interface."):
12+
class ConsoleCog(Cog, description="Provide control and management interface"):
1313
def __init__(self, bot: ActBot):
1414
self.bot = bot
1515

β€Žbot/cogs/game_cogs/combat_cog.pyβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def add_preview_notice(embed: Embed):
2424
# ----------------------------------------------------------------------------------------------------
2525
# * Combat Cog
2626
# ----------------------------------------------------------------------------------------------------
27-
class CombatCog(Cog, description="Allows players to engage in battles."):
27+
class CombatCog(Cog, description="Allow players to engage in battles"):
2828
def __init__(self, bot: ActBot):
2929
self.bot = bot
3030

β€Žbot/cogs/game_cogs/exchange_cog.pyβ€Ž

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
from random import randint
22

33
from discord import Interaction, Member, app_commands
4+
from discord.abc import Messageable
45
from discord.ext.commands import Cog
56

67
from bot.main import ActBot
78
from bot.ui import EmbedX
89
from db.actor import Actor
10+
from utils.misc import numsign
911

1012

1113
# ----------------------------------------------------------------------------------------------------
1214
# * Exchange Cog
1315
# ----------------------------------------------------------------------------------------------------
14-
class ExchangeCog(Cog, description="Allows players to exchange gold and goods."):
16+
class ExchangeCog(Cog, description="Allow players to exchange gold and goods"):
1517
def __init__(self, bot: ActBot):
1618
self.bot = bot
1719

@@ -21,24 +23,26 @@ def __init__(self, bot: ActBot):
2123
@app_commands.guild_only()
2224
@app_commands.command(description="Give your gold to another member")
2325
@app_commands.describe(
24-
member="Member to donate gold to", gold="Amount of gold to donate"
26+
member="Recipient member to send gold to", gold="Amount of gold to donate"
2527
)
2628
async def donate(self, interaction: Interaction, member: Member, gold: int):
2729
# Validate input
2830
if gold <= 0:
2931
await interaction.response.send_message(
3032
embed=EmbedX.error(
31-
f"Your gold input value of **{gold}** is invalid.\nDid you mean **{-gold if gold else randint(1, 1000)}** ?"
33+
f"Your gold input value of `{gold}` is invalid.\nDid you mean **{-gold if gold else randint(1, 1000)}** ?"
3234
),
3335
ephemeral=True,
3436
)
3537
return
3638

3739
# Retrieve donor user
38-
await interaction.response.defer()
40+
await interaction.response.defer(ephemeral=True)
3941
db = self.bot.get_db(interaction.guild)
4042
donor_member = interaction.user
41-
donor_actor = db.find_one(Actor, Actor.id == donor_member.id)
43+
donor_actor = db.find_one(
44+
Actor, Actor.id == donor_member.id
45+
) or self.bot.create_actor(donor_member)
4246
if not donor_actor:
4347
await interaction.followup.send(
4448
embed=EmbedX.error(f"There seems to be a problem from your side."),
@@ -47,7 +51,9 @@ async def donate(self, interaction: Interaction, member: Member, gold: int):
4751

4852
# Retrieve recipient user
4953
recipient_member = member
50-
recipient_actor = db.find_one(Actor, Actor.id == recipient_member.id)
54+
recipient_actor = db.find_one(
55+
Actor, Actor.id == recipient_member.id
56+
) or self.bot.create_actor(recipient_member)
5157
if not recipient_actor:
5258
await interaction.followup.send(
5359
embed=EmbedX.error(
@@ -67,7 +73,7 @@ async def donate(self, interaction: Interaction, member: Member, gold: int):
6773
if donor_actor.gold < gold:
6874
await interaction.followup.send(
6975
embed=EmbedX.warning(
70-
f"You don't have enough to donate **πŸ’° {gold} Gold**.\nYou have **πŸ’° {donor_actor.gold} Gold**."
76+
f"You don't have enough to donate **πŸ’° {gold}** gold.\nYou only have **πŸ’° {donor_actor.gold}** gold."
7177
)
7278
)
7379
return
@@ -77,20 +83,36 @@ async def donate(self, interaction: Interaction, member: Member, gold: int):
7783
recipient_actor.gold += gold
7884
db.save_all([donor_actor, recipient_actor])
7985

80-
# Create the response embed
86+
# Send private response
87+
await interaction.followup.send(
88+
embed=EmbedX.success(
89+
f"You transferred **πŸ’° {gold}** gold to {recipient_member.mention}."
90+
)
91+
)
92+
93+
# Create public response embed
8194
embed = EmbedX.success(
8295
emoji="πŸ’›",
83-
title="Gold Donation",
96+
title="Donation",
8497
description=(
85-
f"{recipient_member.mention} has received **πŸ’° {gold} Gold** from {donor_member.mention}."
98+
f"{donor_member.mention} has given gold to {recipient_member.mention}."
8699
),
87100
)
101+
embed.add_field(
102+
name=f"{donor_actor.display_name}\nGold πŸ”»",
103+
value=f"**πŸ’° -{gold}**",
104+
)
105+
embed.add_field(
106+
name=f"{recipient_member.display_name}\nGold πŸ”Ό",
107+
value=f"**πŸ’° +{gold}**",
108+
)
88109
embed.set_author(
89110
name=donor_member.display_name, icon_url=donor_member.display_avatar
90111
)
91112
embed.set_thumbnail(url=recipient_member.display_avatar)
92113

93-
# Respond
94-
await interaction.followup.send(
95-
content=f"Congratulations, {recipient_member.mention}! πŸŽ‰", embed=embed
96-
)
114+
# Send public response
115+
if isinstance(interaction.channel, Messageable):
116+
await interaction.channel.send(
117+
content=f"Congratulations, {recipient_member.mention}! πŸŽ‰", embed=embed
118+
)

β€Žbot/cogs/game_cogs/farm_cog.pyβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# ----------------------------------------------------------------------------------------------------
1313
# * Farm Cog
1414
# ----------------------------------------------------------------------------------------------------
15-
class FarmCog(Cog, description="Allows players to gain stats and roles."):
15+
class FarmCog(Cog, description="Allow players to gain stats and roles"):
1616
def __init__(self, bot: ActBot):
1717
self.bot = bot
1818

0 commit comments

Comments
Β (0)