Skip to content

Commit 3a8cd83

Browse files
committed
new list command attempt
1 parent e453901 commit 3a8cd83

File tree

1 file changed

+58
-35
lines changed

1 file changed

+58
-35
lines changed

draft_review.py

Lines changed: 58 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -170,48 +170,71 @@ async def reject(self, user, name, summary):
170170

171171
@discord.slash_command(name='list', description="Provides a list of all pending drafts")
172172
async def list(self, ctx: discord.ApplicationContext):
173-
await ctx.defer()
174-
master_list = []
175-
pages = []
176-
master_list.append(pages)
177-
counter = 0
178-
179-
drafts = self.db.get_all_drafts()
180-
for page, draft in drafts.items():
181-
name = page[page.find('/', page.find('/') + 1) + 1:]
182-
user = page[page.find(':') + 1:page.find('/')]
183-
173+
await ctx.defer() # Remove ephemeral flag
174+
175+
try:
176+
master_list = []
177+
pages = []
178+
master_list.append(pages)
179+
counter = 0
180+
181+
drafts = self.db.get_all_drafts()
182+
if not drafts:
183+
await ctx.respond("No drafts found.")
184+
return
185+
186+
# Pre-fetch all user data to avoid multiple API calls
187+
users = set(page[page.find(':') + 1:page.find('/')] for page in drafts.keys())
188+
user_data = {}
184189
user_params = {
185190
"action": "query",
186191
"list": "users",
187-
"ususers": user,
192+
"ususers": "|".join(users),
188193
"format": "json"
189194
}
190195
user_request = requests.get("https://2b2t.miraheze.org/w/api.php", params=user_params)
191196
user_json = user_request.json()
192-
user_id = str(user_json['query']['users'][0]['userid'])
193-
194-
embed = discord.Embed(
195-
title='Draft: ' + name,
196-
url=draft.url,
197-
color=discord.Color.from_rgb(36, 255, 0)
198-
)
199-
embed.set_author(
200-
name=user,
201-
url=f"https://2b2t.miraheze.org/wiki/User:{user.replace(' ', '_')}",
202-
icon_url=f"https://static.miraheze.org/2b2twiki/avatars/2b2twiki_{user_id}_l.png"
203-
)
204-
205-
if len(master_list[counter]) < 10:
206-
master_list[counter].append(embed)
207-
else:
208-
counter += 1
209-
new_list = []
210-
master_list.append(new_list)
211-
master_list[counter].append(embed)
212-
213-
for page_list in master_list:
214-
await ctx.respond(embeds=page_list)
197+
for user_info in user_json['query']['users']:
198+
user_data[user_info['name']] = str(user_info['userid'])
199+
200+
# Create embeds
201+
for page, draft in drafts.items():
202+
name = page[page.find('/', page.find('/') + 1) + 1:]
203+
user = page[page.find(':') + 1:page.find('/')]
204+
205+
user_id = user_data.get(user, "0") # Use cached user data
206+
207+
embed = discord.Embed(
208+
title='Draft: ' + name,
209+
url=draft.url,
210+
color=discord.Color.from_rgb(36, 255, 0)
211+
)
212+
embed.set_author(
213+
name=user,
214+
url=f"https://2b2t.miraheze.org/wiki/User:{user.replace(' ', '_')}",
215+
icon_url=f"https://static.miraheze.org/2b2twiki/avatars/2b2twiki_{user_id}_l.png"
216+
)
217+
218+
if len(master_list[counter]) < 10:
219+
master_list[counter].append(embed)
220+
else:
221+
counter += 1
222+
new_list = []
223+
master_list.append(new_list)
224+
master_list[counter].append(embed)
225+
226+
# Send responses
227+
first = True
228+
for page_list in master_list:
229+
if page_list: # Only send if there are embeds
230+
if first:
231+
await ctx.respond(embeds=page_list)
232+
first = False
233+
else:
234+
await ctx.followup.send(embeds=page_list)
235+
236+
except Exception as e:
237+
await ctx.respond(f"Error listing drafts: {str(e)}")
215238

216239
@discord.slash_command(name='debug', description='Intended for bot developers only')
217240
@commands.has_role(1159901879417974795)

0 commit comments

Comments
 (0)