Skip to content

Commit 1fcfdb0

Browse files
Merge pull request #46 from LewisProjects/development
Development
2 parents a63d4d2 + d16e24d commit 1fcfdb0

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

cogs/Levels.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ async def handle_message(self, message: Message):
189189
]
190190
):
191191
return
192-
if not random.randrange(1, 3) == 1:
192+
if not random.randint(1, 3) == 1:
193193
return
194194
elif await self.on_cooldown(message):
195195
return
@@ -285,17 +285,27 @@ async def send_levelup(message: Message, level: int):
285285
"""
286286
await message.channel.send(msg)
287287

288-
async def get_rank(self, user_record) -> int:
289-
sql = "SELECT * FROM levels WHERE level >= ? ORDER BY level DESC"
290-
records_raw = await self.db.execute(sql, (user_record.lvl,))
291-
records = await records_raw.fetchall()
292-
user_records = sorted([User(*record) for record in records], key=lambda x: x.total_exp, reverse=True)
293-
rank = 1
294-
for record in user_records:
295-
if record.user_id == user_record.user_id:
296-
return rank
297-
rank += 1
298-
raise UserNotFound
288+
async def get_rank(self, guild_id, user_record) -> int:
289+
"""
290+
what to do
291+
#1. eliminate all the users that have a lower level than the user
292+
#2. sort the users by xp
293+
#3. get the index of the user
294+
#4. add 1 to the index
295+
"""
296+
records = await self.db.execute(
297+
"SELECT * FROM levels WHERE guild_id = ? AND level >= ? ORDER BY xp DESC",
298+
(
299+
guild_id,
300+
user_record.lvl,
301+
),
302+
)
303+
records = await records.fetchall()
304+
if records is None:
305+
raise UserNotFound
306+
records = [User(*record) for record in records]
307+
records = sorted(records, key=lambda x: x.xp, reverse=True)
308+
return records.index(user_record) + 1
299309

300310

301311
class Level(commands.Cog):
@@ -349,8 +359,10 @@ async def on_message(self, message):
349359

350360
@commands.Cog.listener()
351361
async def on_ready(self):
352-
self.controller = LevelsController(self.bot, self.bot.db)
353-
print("[Level] Ready")
362+
if self.controller is None:
363+
self.controller = LevelsController(self.bot, self.bot.db)
364+
if not self.bot.ready_:
365+
print("[Levels] Ready")
354366

355367
@commands.slash_command()
356368
@commands.guild_only()
@@ -366,10 +378,10 @@ async def rank(self, inter: ApplicationCommandInteraction, user: Optional[Member
366378
try:
367379
user_record = await self.controller.get_user(user)
368380
if not user_record:
369-
print("[Level] User not found")
381+
print("[Levels] User not found")
370382
await self.controller.add_user(user, inter.guild)
371383
return await self.rank(inter, user)
372-
rank = await self.controller.get_rank(user_record)
384+
rank = await self.controller.get_rank(inter.guild.id, user_record)
373385
image = await self.controller.generate_image_card(user, rank, user_record.xp, user_record.lvl)
374386
await inter.send(file=image)
375387
except UserNotFound:

utils/CONSTANTS.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from dataclasses import dataclass
44

5-
__VERSION__ = "1.8.1"
5+
__VERSION__ = "1.8.2"
66

77
from typing import Final
88

0 commit comments

Comments
 (0)