Skip to content

Commit b4a2ef0

Browse files
fix pterodactyl merge conflicts
1 parent a7fab0e commit b4a2ef0

File tree

2 files changed

+27
-15
lines changed

2 files changed

+27
-15
lines changed

cogs/Levels.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ async def on_error(self, inter, error):
4545
else:
4646
raise error
4747

48-
async def get_count(self, guild: Guild) -> int:
49-
record = await self.db.execute("SELECT COUNT(*) FROM levels WHERE guild_id = ?", (guild.id,))
48+
async def get_count(self, guild: Guild | int) -> int:
49+
if isinstance(guild, Guild):
50+
guild = guild.id
51+
52+
record = await self.db.execute("SELECT COUNT(*) FROM levels WHERE guild_id = ?", (int(guild),))
5053
return (await record.fetchone())[0]
5154

5255
async def get_leaderboard(self, guild: Guild, limit: int = 10, offset: Optional[int, int] = None) -> list[User]:
@@ -440,7 +443,7 @@ async def leaderboard(self, inter: ApplicationCommandInteraction):
440443
embed.set_footer(text=f"{inter.author}", icon_url=inter.author.display_avatar.url)
441444
embed.timestamp = dt.datetime.now()
442445

443-
await inter.send(embed=embed, view=LeaderboardView(inter, self.controller, embed, inter.author.id))
446+
await inter.send(embed=embed, view=LeaderboardView(controller=self.controller, firstemb=embed, author=inter.author.id))
444447

445448
@commands.slash_command()
446449
@commands.guild_only()

utils/pagination.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import math
12
from typing import TYPE_CHECKING
23

34
from disnake import ui, ButtonStyle, Embed
@@ -101,7 +102,8 @@ class LeaderboardView(ui.View):
101102
"""
102103

103104
def __init__(
104-
self, controller: "LevelsController", firstemb: Embed, author: int = 123, set_user: bool = False, timeout: float = None
105+
self, controller: "LevelsController", firstemb: Embed, author: int = 123, set_user: bool = False,
106+
timeout: float = None
105107
):
106108

107109
self.controller = controller
@@ -114,8 +116,12 @@ def __init__(
114116
)
115117

116118
async def at_last_page(self, inter):
117-
records = await self.controller.get_count(inter.guild)
118-
if records % 10 <= 0:
119+
records = await self.controller.get_count(inter.guild.id)
120+
if records % 10 == 0:
121+
last_page = records // 10 - 1
122+
else:
123+
last_page = records // 10
124+
if self.CurrentEmbed == last_page:
119125
return True
120126
else:
121127
return False
@@ -124,7 +130,8 @@ async def create_page(self, inter, page_num) -> Embed:
124130
if page_num == 0:
125131
return self.firstemb
126132
else:
127-
records = await self.controller.get_leaderboard(inter.guild, limit=10, offset=page_num * 10)
133+
offset = page_num * 10
134+
records = await self.controller.get_leaderboard(inter.guild, limit=10, offset=offset)
128135
try:
129136
cmd_user = await self.controller.get_user(inter.author)
130137
except UserNotFound:
@@ -138,12 +145,14 @@ async def create_page(self, inter, page_num) -> Embed:
138145
user = await inter.bot.fetch_user(record.user_id)
139146
if record.user_id == inter.author.id:
140147
embed.add_field(
141-
name=f"{i + 1}. {user} ~ You ", value=f"Level: {record.lvl}\nTotal XP: {record.total_exp:,}", inline=False
148+
name=f"{i + 1 + offset}. {user} ~ You ",
149+
value=f"Level: {record.lvl}\nTotal XP: {record.total_exp:,}", inline=False
142150
)
143151
self.user_set = True
144152
else:
145153
embed.add_field(
146-
name=f"{i + 1}. {user}", value=f"Level: {record.lvl}\nTotal XP: {record.total_exp:,}", inline=False
154+
name=f"{i + 1 + offset}. {user}", value=f"Level: {record.lvl}\nTotal XP: {record.total_exp:,}",
155+
inline=False
147156
)
148157
if not self.user_set:
149158
rank = await self.controller.get_rank(inter.guild.id, cmd_user)
@@ -155,6 +164,7 @@ async def create_page(self, inter, page_num) -> Embed:
155164

156165
embed.set_footer(text=f"{inter.author}", icon_url=inter.author.avatar.url)
157166
embed.timestamp = dt.datetime.now()
167+
return embed
158168

159169
@ui.button(emoji="⏮️", style=ButtonStyle.grey)
160170
async def front(self, button, inter):
@@ -196,8 +206,7 @@ async def next(self, button, inter):
196206
return await inter.send("you are already at the end", ephemeral=True)
197207
await inter.response.edit_message(embed=await self.create_page(inter, self.CurrentEmbed + 1))
198208
self.CurrentEmbed += 1
199-
200-
except:
209+
except Exception as e:
201210
await inter.send("Unable to change the page.", ephemeral=True)
202211

203212
@ui.button(emoji="⏭️", style=ButtonStyle.grey)
@@ -207,11 +216,11 @@ async def end(self, button, inter):
207216
return await inter.send("You cannot interact with these buttons.", ephemeral=True)
208217
elif await self.at_last_page(inter):
209218
return await inter.send("you are already at the end", ephemeral=True)
210-
get_last_page = await self.controller.get_count(inter.guild.id)
211-
if get_last_page % 10 == 0:
212-
last_page = get_last_page // 10
219+
record_count = await self.controller.get_count(inter.guild.id)
220+
if record_count % 10 == 0: # if the number of records is divisible by 10 e.g. 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 etc. then we must subtract 1 from the number of records to get the last page
221+
last_page = record_count // 10 - 1
213222
else:
214-
last_page = get_last_page // 10 + 1
223+
last_page = math.floor(record_count // 10) # if the number of records is not divisible by 10 e.g. 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29 etc. then we can just divide the number of records by 10 to get the last page
215224
await inter.response.edit_message(embed=await self.create_page(inter, last_page))
216225
self.CurrentEmbed = last_page
217226

0 commit comments

Comments
 (0)