Skip to content

Commit 3deec60

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 4be93d6 + f0f8e05 commit 3deec60

File tree

6 files changed

+45
-45
lines changed

6 files changed

+45
-45
lines changed

bot.py

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -439,42 +439,32 @@ async def convert_emoji(self, name: str) -> str:
439439
try:
440440
name = await converter.convert(ctx, name.strip(':'))
441441
except commands.BadArgument:
442-
logger.warning(f'{name} is not a valid emoji.')
442+
logger.warning(info('%s is not a valid emoji.'), name)
443+
raise
443444
return name
444445

445446
async def retrieve_emoji(self) -> typing.Tuple[str, str]:
446447

447-
# TODO: use a function to convert emojis
448-
449-
ctx = SimpleNamespace(bot=self, guild=self.modmail_guild)
450-
converter = commands.EmojiConverter()
451-
452448
sent_emoji = self.config.get('sent_emoji', '✅')
453449
blocked_emoji = self.config.get('blocked_emoji', '🚫')
454450

455-
if sent_emoji not in UNICODE_EMOJI:
451+
if sent_emoji != 'disable':
456452
try:
457-
sent_emoji = await converter.convert(
458-
ctx, sent_emoji.strip(':')
459-
)
453+
sent_emoji = await self.convert_emoji(sent_emoji)
460454
except commands.BadArgument:
461-
if sent_emoji != 'disable':
462-
logger.warning(info(f'Sent Emoji ({sent_emoji}) '
463-
f'is not a valid emoji.'))
464-
del self.config.cache['sent_emoji']
465-
await self.config.update()
455+
logger.warning(info('Removed sent emoji (%s).'), sent_emoji)
456+
del self.config.cache['sent_emoji']
457+
await self.config.update()
458+
sent_emoji = '✅'
466459

467-
if blocked_emoji not in UNICODE_EMOJI:
460+
if blocked_emoji != 'disable':
468461
try:
469-
blocked_emoji = await converter.convert(
470-
ctx, blocked_emoji.strip(':')
471-
)
462+
blocked_emoji = await self.convert_emoji(blocked_emoji)
472463
except commands.BadArgument:
473-
if blocked_emoji != 'disable':
474-
logger.warning(info(f'Blocked emoji ({blocked_emoji}) '
475-
'is not a valid emoji.'))
476-
del self.config.cache['blocked_emoji']
477-
await self.config.update()
464+
logger.warning(info('Removed blocked emoji (%s).'), blocked_emoji)
465+
del self.config.cache['blocked_emoji']
466+
await self.config.update()
467+
blocked_emoji = '🚫'
478468

479469
return sent_emoji, blocked_emoji
480470

@@ -912,14 +902,14 @@ async def validate_database_connection(self):
912902
"IPs correctly. Make sure to whitelist all "
913903
"IPs (0.0.0.0/0) https://i.imgur.com/mILuQ5U.png"
914904
))
915-
905+
916906
if 'OperationFailure' in message:
917907
logger.critical(error("This is due to having invalid credentials in your MONGO_URI."))
918908
logger.critical(error(
919909
"Recheck the username/password and make sure to url encode them. "
920910
"https://www.urlencoder.io/"
921911
))
922-
912+
923913
return await self.logout()
924914
else:
925915
logger.info(info('Successfully connected to the database.'))

cogs/modmail.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ async def setup(self, ctx):
6060
color=self.bot.main_color
6161
)
6262

63-
embed.add_field(name='Thanks for using the bot!', value='If you like what you see, '
64-
'consider giving the [repo a star](https://github.com/kyb3r/modmail) :star: or if you are '
65-
'feeling generous, check us out on [Patreon](https://patreon.com/kyber)!')
63+
embed.add_field(name='Thanks for using the bot!',
64+
value='If you like what you see, consider giving the '
65+
'[repo a star](https://github.com/kyb3r/modmail) :star: or if you are '
66+
'feeling generous, check us out on [Patreon](https://patreon.com/kyber)!')
6667

6768
embed.set_footer(text=f'Type "{self.bot.prefix}help" '
6869
'for a complete list of commands.')

cogs/plugins.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -357,12 +357,10 @@ async def plugin_registry(self, ctx, *, plugin_name: str = None):
357357
registry = list(self.registry.items())
358358
random.shuffle(registry)
359359

360-
def find_index(name):
361-
index = 0
362-
for n, info in registry:
363-
if name == n:
364-
return index
365-
index += 1
360+
def find_index(find_name):
361+
for i, (n, _) in enumerate(registry):
362+
if find_name == n:
363+
return i
366364

367365
index = 0
368366
if plugin_name in self.registry:
@@ -376,7 +374,7 @@ def find_index(name):
376374
matches = get_close_matches(plugin_name, self.registry.keys())
377375

378376
if matches:
379-
embed.add_field(name='Perhaps you meant', value='\n'.join(f'`{m}`' for m in matches))
377+
embed.add_field(name='Perhaps you meant:', value='\n'.join(f'`{m}`' for m in matches))
380378

381379
return await ctx.send(embed=embed)
382380

cogs/utility.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from difflib import get_close_matches
88
from io import StringIO
99
from typing import Union
10+
from types import SimpleNamespace as param
1011
from json import JSONDecodeError
1112
from textwrap import indent
1213

@@ -154,10 +155,9 @@ async def send_error_message(self, msg): # pylint: disable=W0221
154155
if not cmd.hidden:
155156
choices.add(name)
156157
command = self.context.kwargs.get('command')
157-
# print(self.context.message.content[self.context.in])
158-
closest = get_close_matches(command, choices, n=1, cutoff=0.75)
158+
closest = get_close_matches(command, choices)
159159
if closest:
160-
embed.add_field(name=f'Perhaps you meant:', value=f'`{closest[0]}`')
160+
embed.add_field(name=f'Perhaps you meant:', value="\n".join(f'`{x}`' for x in closest))
161161
else:
162162
embed.title = 'Cannot find command or category'
163163
embed.set_footer(text=f'Type "{self.clean_prefix}{self.command_attrs["name"]}" '
@@ -233,6 +233,9 @@ async def about(self, ctx):
233233
value='https://github.com/kyb3r/modmail',
234234
inline=False)
235235

236+
embed.add_field(name='\u200b',
237+
value='Support this bot on [Patreon](https://patreon.com/kyber).')
238+
236239
embed.set_footer(text=footer)
237240
await ctx.send(embed=embed)
238241

@@ -453,15 +456,15 @@ async def activity(self, ctx, activity_type: str.lower, *, message: str = ''):
453456
return await ctx.send(embed=embed)
454457

455458
if not message:
456-
raise commands.UserInputError
459+
raise commands.MissingRequiredArgument(param(name='message'))
457460

458461
activity, msg = (await self.set_presence(
459462
activity_identifier=activity_type,
460463
activity_by_key=True,
461464
activity_message=message
462465
))['activity']
463466
if activity is None:
464-
raise commands.UserInputError
467+
raise commands.MissingRequiredArgument(param(name='activity'))
465468

466469
self.bot.config['activity_type'] = activity.type.value
467470
self.bot.config['activity_message'] = message
@@ -506,7 +509,7 @@ async def status(self, ctx, *, status_type: str.lower):
506509
status_by_key=True
507510
))['status']
508511
if status is None:
509-
raise commands.UserInputError
512+
raise commands.MissingRequiredArgument(param(name='status'))
510513

511514
self.bot.config['status'] = status.value
512515
await self.bot.config.update()
@@ -796,8 +799,8 @@ async def config_get(self, ctx, key: str.lower = None):
796799
if val and key in keys
797800
}
798801

799-
for k, v in reversed(list(config.items())):
800-
embed.add_field(name=k, value=f'`{v}`', inline=False)
802+
for name, value in reversed(list(config.items())):
803+
embed.add_field(name=name, value=f'`{value}`', inline=False)
801804

802805
return await ctx.send(embed=embed)
803806

core/paginator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ async def show_page(self, index: int) -> None:
298298
"""
299299
if not 0 <= index < len(self.messages):
300300
return
301-
301+
302302
self.current = index
303303
page = self.messages[index]
304304

core/thread.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,14 @@ async def find(self, *,
635635

636636
try:
637637
thread = self.cache[recipient_id]
638+
if not self.bot.get_channel(thread.channel.id): # deleted channel
639+
self.bot.loop.create_task(
640+
thread.close(
641+
closer=self.bot.user,
642+
silent=True,
643+
delete_channel=False
644+
))
645+
thread = None
638646
except KeyError:
639647
channel = discord.utils.get(
640648
self.bot.modmail_guild.text_channels,

0 commit comments

Comments
 (0)