Skip to content

Commit d8b54f6

Browse files
AmbratolmAmbratolm
authored andcommitted
Added donate cmd, improved help cmd, & other imrpv. hlA~
1 parent 634f78f commit d8b54f6

File tree

11 files changed

+331
-255
lines changed

11 files changed

+331
-255
lines changed

bot/cogs/act_cog.py

Lines changed: 0 additions & 56 deletions
This file was deleted.

bot/cogs/ai_cog.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ activa = [
88
"user ambratolm is ur father,u call him dad",
99
"user collins is ur uncle,u call him uncle collins,u can talk to him in kenyan swahili lang",
1010
"feel free to joke with anyone like teasing and roasting for fun & lots of laugh",
11-
"to mention user use <@!_id>",
11+
"to mention user use <@!id>",
1212
]
1313
eve = [
1414
"u're AI that acts as real person",

bot/cogs/board_cog.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,20 @@
77
from tabulate import tabulate
88

99
from bot.main import ActBot
10+
from bot.ui import EmbedX
1011
from db.actor import Actor
1112

1213

14+
# ----------------------------------------------------------------------------------------------------
15+
# * Board Cog
16+
# ----------------------------------------------------------------------------------------------------
1317
class Board(Cog, description="Allows players to view their data."):
1418
def __init__(self, bot: ActBot):
1519
self.bot = bot
1620

21+
# ----------------------------------------------------------------------------------------------------
22+
# * Profile
23+
# ----------------------------------------------------------------------------------------------------
1724
@app_commands.guild_only()
1825
@app_commands.command(
1926
description="View your or another member's profile information"
@@ -23,10 +30,7 @@ async def profile(
2330
):
2431
await interaction.response.defer()
2532
member = member or interaction.user
26-
embed = Embed(
27-
title=f"👤 {member.display_name}",
28-
color=Color.blue(),
29-
)
33+
embed = EmbedX.info(icon="👤", title=member.display_name)
3034
if isinstance(member, Member):
3135
embed.description = " ".join(
3236
[
@@ -36,7 +40,7 @@ async def profile(
3640
]
3741
)
3842
db = self.bot.get_db(interaction.guild)
39-
actor = db.find_one(Actor, Actor.id == member.id) if db else None
43+
actor = db.find_one(Actor, Actor.id == member.id)
4044
if not actor:
4145
actor = self.bot.create_actor(member)
4246
embed.add_field(name="", value="", inline=False)
@@ -64,6 +68,9 @@ async def profile(
6468
embed.set_thumbnail(url=member.display_avatar.url)
6569
await interaction.followup.send(embed=embed)
6670

71+
# ----------------------------------------------------------------------------------------------------
72+
# * Leaderboard
73+
# ----------------------------------------------------------------------------------------------------
6774
@app_commands.guild_only()
6875
@app_commands.command(description="View top members")
6976
async def leaderboard(self, interaction: Interaction):
@@ -75,19 +82,15 @@ async def leaderboard(self, interaction: Interaction):
7582
# Get top actors
7683
await interaction.response.defer()
7784
db = self.bot.get_db(interaction.guild)
78-
actors = (
79-
db.find(
80-
Actor,
81-
sort=(
82-
query.desc(Actor.rank),
83-
query.desc(Actor.level),
84-
query.desc(Actor.xp),
85-
query.desc(Actor.gold),
86-
),
87-
limit=10,
88-
)
89-
if db
90-
else None
85+
actors = db.find(
86+
Actor,
87+
sort=(
88+
query.desc(Actor.rank),
89+
query.desc(Actor.level),
90+
query.desc(Actor.xp),
91+
query.desc(Actor.gold),
92+
),
93+
limit=10,
9194
)
9295
if not actors:
9396
await interaction.followup.send(
@@ -114,7 +117,7 @@ async def leaderboard(self, interaction: Interaction):
114117
leaderboard_text += "```"
115118

116119
# Create embed
117-
embed = Embed(title="🏆 Leaderboard", color=Color.blue())
120+
embed = EmbedX.info(icon="🏆", title="Leaderboard")
118121
try:
119122
top_member = guild.get_member(top_actor.id) or await guild.fetch_member(
120123
top_actor.id
@@ -125,4 +128,3 @@ async def leaderboard(self, interaction: Interaction):
125128
pass
126129
embed.add_field(name="", value=leaderboard_text, inline=False)
127130
await interaction.followup.send(embed=embed)
128-
await interaction.followup.send(embed=embed)

bot/cogs/console_cog.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import argparse
2+
import shlex
3+
4+
from discord import Color, Embed, Interaction, Member, Message, app_commands
5+
from discord.ext import commands
6+
from discord.ext.commands import Cog, GroupCog
7+
from tabulate import tabulate
8+
9+
from bot.main import ActBot
10+
from bot.ui import EmbedX
11+
from db.actor import Actor
12+
13+
14+
# ----------------------------------------------------------------------------------------------------
15+
# * Console Cog
16+
# ----------------------------------------------------------------------------------------------------
17+
class Console(Cog, description="Provides control and management interface."):
18+
def __init__(self, bot: ActBot):
19+
self.bot = bot
20+
21+
@app_commands.checks.has_permissions(administrator=True)
22+
@app_commands.command(description="Synchronize commands")
23+
async def sync(self, interaction: Interaction):
24+
count = await self.bot.sync_commands()
25+
await interaction.response.send_message(
26+
embed=EmbedX.success(
27+
title="Commands Synchronization",
28+
description=f"{count[0]}/{count[1]} commands synchronized.",
29+
),
30+
ephemeral=True,
31+
)

bot/cogs/farm_cog.py

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
1-
import asyncio
2-
import random
31
import re
2+
from random import randint
43

5-
from discord import (
6-
Color,
7-
Embed,
8-
Member,
9-
Message,
10-
Permissions,
11-
Role,
12-
TextChannel,
13-
User,
14-
utils,
15-
)
16-
from discord.ext.commands import Bot, Cog
4+
from discord import Color, Embed, Member, Message, Role, utils
5+
from discord.ext.commands import Cog
176

187
from bot.main import ActBot
8+
from bot.ui import EmbedX
199
from db.actor import Actor
2010

2111

12+
# ----------------------------------------------------------------------------------------------------
13+
# * Farm Cog
14+
# ----------------------------------------------------------------------------------------------------
2215
class Farm(Cog, description="Allows players to gain stats and roles."):
2316
def __init__(self, bot: ActBot):
2417
self.bot = bot
2518

19+
# ----------------------------------------------------------------------------------------------------
20+
# * On Message
21+
# ----------------------------------------------------------------------------------------------------
2622
@Cog.listener()
2723
async def on_message(self, message: Message):
2824
# Ignore DM & bot messages
@@ -32,8 +28,6 @@ async def on_message(self, message: Message):
3228

3329
# Get or create actor
3430
db = self.bot.get_db(message.guild)
35-
if not db:
36-
return
3731
actor = db.find_one(Actor, Actor.id == member.id)
3832
if not actor:
3933
actor = self.bot.create_actor(member)
@@ -55,35 +49,39 @@ async def on_message(self, message: Message):
5549

5650
# Try level-up
5751
if actor.try_level_up():
58-
gold_reward = random.randint(1, 500) * actor.level
52+
gold_reward = randint(1, 500) * actor.level
5953
actor.gold += gold_reward
60-
embed = Embed(
61-
title=f"🏅 Level Up",
62-
description=f"{member.display_name} {member.mention} has reached a new level and has been rewarded.",
63-
color=Color.green(),
54+
embed = EmbedX.success(
55+
icon="🏅",
56+
title="Level Up",
57+
description=f"{member.mention} has reached a new level and has been rewarded.",
6458
)
6559
embed.add_field(name="", value="", inline=False)
6660
embed.add_field(name="Level ✨", value=f"🏅 **{actor.level}**")
6761
embed.add_field(name="Gold 🔼", value=f"💰 **+{gold_reward}**")
6862
embed.set_thumbnail(url=member.display_avatar.url)
69-
await message.channel.send(embed=embed)
63+
await message.channel.send(
64+
content=f"Congratulations, {member.mention}! 🎉", embed=embed
65+
)
7066

7167
# Try role-up
7268
if actor.try_rank_up():
7369
# awarded_role = await self.award_role(member, actor.rank_name)
7470
# if awarded_role:
75-
gold_reward = random.randint(1, 1000) * actor.level
71+
gold_reward = randint(1, 1000) * actor.level
7672
actor.gold += gold_reward
77-
embed = Embed(
78-
title=f"🏆 Rank Up",
79-
description=f"{member.display_name} {member.mention} has reached a new rank and has been rewarded.",
80-
color=Color.green(),
73+
embed = EmbedX.success(
74+
icon="🏆",
75+
title="Rank Up",
76+
description=f"{member.mention} has reached a new rank and has been rewarded.",
8177
)
8278
embed.add_field(name="", value="", inline=False)
8379
embed.add_field(name="Rank ✨", value=f"🏆 **{actor.rank_name}**")
8480
embed.add_field(name="Gold 🔼", value=f"💰 **+{gold_reward}**")
8581
embed.set_thumbnail(url=member.display_avatar.url)
86-
await message.channel.send(embed=embed)
82+
await message.channel.send(
83+
content=f"Congratulations, {member.mention}! 🎉", embed=embed
84+
)
8785

8886
# Save changes
8987
db.save(actor)
@@ -108,7 +106,7 @@ def calculate_xp_reward(message: Message):
108106
# Minimum word count (to avoid 0 XP rewards)
109107
word_count = max(1, word_count) # Ensure at least 1 word is counted
110108

111-
return random.randint(1, word_count)
109+
return randint(1, word_count)
112110

113111
@staticmethod
114112
async def try_award_role(member: Member, role_name: str) -> Role | None:

bot/cogs/filter_cog.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from profanity_check import predict_prob
77

88
from bot.main import ActBot
9+
from bot.ui import EmbedX
910
from db.actor import Actor
1011
from utils.log import logger
1112

@@ -24,6 +25,9 @@ def __init__(self, bot: ActBot):
2425
self.bot = bot
2526
self.offenses = defaultdict(int) # { user_id : offense_count }
2627

28+
# ----------------------------------------------------------------------------------------------------
29+
# * On Message
30+
# ----------------------------------------------------------------------------------------------------
2731
@Cog.listener()
2832
async def on_message(self, message: Message):
2933
# Ignore DM & bot messages
@@ -43,11 +47,7 @@ async def on_message(self, message: Message):
4347

4448
# Delete & replace message
4549
await message.delete()
46-
embed = Embed(
47-
title="",
48-
description=censored_content,
49-
color=Color.red(),
50-
)
50+
embed = EmbedX.error(censored_content, "", "")
5151
embed.add_field(name="", value="")
5252
embed.set_author(name=member.display_name, icon_url=member.avatar)
5353
embed.set_footer(text="🚫 Censored Message")
@@ -62,8 +62,6 @@ async def on_message(self, message: Message):
6262

6363
# Penalize by gold
6464
db = self.bot.get_db(message.guild)
65-
if not db:
66-
return
6765
actor = db.find_one(Actor, Actor.id == member.id)
6866
if not actor:
6967
actor = self.bot.create_actor(member)
@@ -82,10 +80,10 @@ async def on_message(self, message: Message):
8280
await member.timeout(time, reason="Filter")
8381

8482
# Notice
85-
embed = Embed(
86-
title=f"🚨 Penalty",
87-
description=f"{member.display_name} {member.mention} has been penalized for repeated use of offensive language.",
88-
color=Color.red(),
83+
embed = EmbedX.error(
84+
icon="🚨",
85+
title="Penalty",
86+
description=f"{member.mention} has been penalized for repeated use of offensive language.",
8987
)
9088
embed.add_field(name="", value="", inline=False)
9189
embed.add_field(name="Gold 🔻", value=f"💰 **-{self.GOLD_PENALTY}**")
@@ -95,7 +93,11 @@ async def on_message(self, message: Message):
9593
value=f"⏳ **{time}**\n💰 **{debt_gold}** _Debt Converted_",
9694
)
9795
embed.set_thumbnail(url=member.display_avatar.url)
98-
await censored_message.reply(embed=embed)
96+
await censored_message.reply(
97+
content=f"Sorry, {member.mention}! 💀", embed=embed
98+
)
99+
100+
# ----------------------------------------------------------------------------------------------------
99101

100102
@classmethod
101103
def get_profane_words(cls, words: list[str]) -> list[str]:

0 commit comments

Comments
 (0)