Skip to content

Commit 60a27f0

Browse files
committed
Help command and stuff
1 parent 20cbc08 commit 60a27f0

File tree

4 files changed

+27
-19
lines changed

4 files changed

+27
-19
lines changed

bot.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,12 @@ def run(self, *args, **kwargs):
202202
self.metadata_task.cancel()
203203
self.loop.run_until_complete(self.metadata_task)
204204
except asyncio.CancelledError:
205-
logger.debug('data_task has been cancelled')
205+
logger.debug(info('data_task has been cancelled.'))
206206
try:
207207
self.autoupdate_task.cancel()
208208
self.loop.run_until_complete(self.autoupdate_task)
209209
except asyncio.CancelledError:
210-
logger.debug('autoupdate_task has been cancelled')
210+
logger.debug(info('autoupdate_task has been cancelled.'))
211211

212212
self.loop.run_until_complete(self.logout())
213213
for task in asyncio.Task.all_tasks():
@@ -217,7 +217,7 @@ def run(self, *args, **kwargs):
217217
asyncio.gather(*asyncio.Task.all_tasks())
218218
)
219219
except asyncio.CancelledError:
220-
logger.debug('All pending tasks has been cancelled')
220+
logger.debug(info('All pending tasks has been cancelled.'))
221221
finally:
222222
self.loop.run_until_complete(self.session.close())
223223
self.loop.close()
@@ -922,7 +922,7 @@ async def metadata_loop(self):
922922

923923
try:
924924
await self.session.post('https://api.modmail.tk/metadata', json=data)
925-
logger.debug('Posted metadata')
925+
logger.debug(info('Posted metadata'))
926926
except:
927927
pass
928928

cogs/utility.py

+20-13
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from datetime import datetime
77
from difflib import get_close_matches
88
from io import StringIO
9+
from operator import itemgetter
910
from typing import Union
1011
from json import JSONDecodeError
1112
from pkg_resources import parse_version
@@ -33,23 +34,27 @@ class Utility:
3334
def __init__(self, bot: Bot):
3435
self.bot = bot
3536

37+
@staticmethod
38+
def get_perms_required(cmd) -> PermissionLevel:
39+
for c in cmd.checks:
40+
perm_level = getattr(c, 'permission_level',
41+
PermissionLevel.INVALID)
42+
if perm_level is not PermissionLevel.INVALID:
43+
return perm_level
44+
return PermissionLevel.INVALID
45+
3646
async def format_cog_help(self, ctx, cog):
3747
"""Formats the text for a cog help"""
3848

3949
prefix = self.bot.prefix
4050

41-
def perms_required(cmd):
42-
for c in cmd.checks:
43-
return getattr(c, 'permission_level', 0)
44-
return 0
45-
4651
fmts = ['']
47-
for cmd in sorted(self.bot.commands,
48-
key=lambda cmd: perms_required(cmd)):
52+
for perm_level, cmd in sorted(((self.get_perms_required(c), c) for c in self.bot.commands),
53+
key=itemgetter(0)):
4954
if cmd.instance is cog and not cmd.hidden:
50-
new_fmt = f'`{prefix + cmd.qualified_name}` '
51-
perm_level = perms_required(cmd)
52-
if perm_level is not None:
55+
if perm_level is PermissionLevel.INVALID:
56+
new_fmt = f'`{prefix + cmd.qualified_name}` '
57+
else:
5358
new_fmt = f'`[{perm_level}] {prefix + cmd.qualified_name}` '
5459

5560
new_fmt += f'- {cmd.short_doc}\n'
@@ -88,15 +93,17 @@ async def format_command_help(self, cmd):
8893

8994
prefix = self.bot.prefix
9095

91-
perm_level = next(getattr(c, 'permission_level', None) for c in cmd.checks)
92-
perm_level = f'{perm_level.name} [{perm_level}]' if perm_level is not None else ''
96+
perm_level = self.get_perms_required(cmd)
97+
if perm_level is not PermissionLevel.INVALID:
98+
perm_level = f'{perm_level.name} [{perm_level}]'
99+
else:
100+
perm_level = ''
93101

94102
embed = Embed(
95103
title=f'`{prefix}{cmd.signature}`',
96104
color=self.bot.main_color,
97105
description=cmd.help
98106
)
99-
100107

101108
if not isinstance(cmd, commands.Group):
102109
embed.set_footer(text=f'Permission level: {perm_level}')

core/changelog.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,11 @@ class Changelog:
106106
----------------
107107
RAW_CHANGELOG_URL : str
108108
The URL to Modmail changelog.
109+
CHANGELOG_URL : str
110+
The URL to Modmail changelog directly from in GitHub.
109111
VERSION_REGEX : re.Pattern
110112
The regex used to parse the versions.
111113
"""
112-
113-
114114

115115
RAW_CHANGELOG_URL = 'https://raw.githubusercontent.com/kyb3r/modmail/master/CHANGELOG.md'
116116
CHANGELOG_URL = 'https://github.com/kyb3r/modmail/blob/master/CHANGELOG.md'

core/models.py

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class PermissionLevel(IntEnum):
2020
MOD = 3
2121
SUPPORTER = 2
2222
REGULAR = 1
23+
INVALID = -1
2324

2425

2526
class Bot(abc.ABC, commands.Bot):

0 commit comments

Comments
 (0)