|
|
@ -30,10 +30,12 @@ import re |
|
|
|
import inspect |
|
|
|
|
|
|
|
from .errors import BadArgument, NoPrivateMessage |
|
|
|
from .view import StringView |
|
|
|
|
|
|
|
__all__ = [ 'Converter', 'MemberConverter', 'UserConverter', |
|
|
|
'TextChannelConverter', 'InviteConverter', 'RoleConverter', |
|
|
|
'GameConverter', 'ColourConverter', 'VoiceChannelConverter' ] |
|
|
|
'GameConverter', 'ColourConverter', 'VoiceChannelConverter', |
|
|
|
'clean_content' ] |
|
|
|
|
|
|
|
def _get_from_guilds(bot, getter, argument): |
|
|
|
result = None |
|
|
@ -258,3 +260,61 @@ class EmojiConverter(IDConverter): |
|
|
|
raise BadArgument('Emoji "{}" not found.'.format(self.argument)) |
|
|
|
|
|
|
|
return result |
|
|
|
|
|
|
|
class clean_content(Converter): |
|
|
|
def __init__(self, *, fix_channel_mentions=False, use_nicknames=True): |
|
|
|
self.fix_channel_mentions = fix_channel_mentions |
|
|
|
self.use_nicknames = use_nicknames |
|
|
|
|
|
|
|
def convert(self): |
|
|
|
message = self.ctx.message |
|
|
|
transformations = {} |
|
|
|
|
|
|
|
if self.fix_channel_mentions: |
|
|
|
transformations.update( |
|
|
|
('<#%s>' % channel.id, '#' + channel.name) |
|
|
|
for channel in message.channel_mentions |
|
|
|
) |
|
|
|
|
|
|
|
if self.use_nicknames: |
|
|
|
transformations.update( |
|
|
|
('<@%s>' % member.id, '@' + member.display_name) |
|
|
|
for member in message.mentions |
|
|
|
) |
|
|
|
|
|
|
|
transformations.update( |
|
|
|
('<@!%s>' % member.id, '@' + member.display_name) |
|
|
|
for member in message.mentions |
|
|
|
) |
|
|
|
else: |
|
|
|
transformations.update( |
|
|
|
('<@%s>' % member.id, '@' + member.name) |
|
|
|
for member in message.mentions |
|
|
|
) |
|
|
|
|
|
|
|
transformations.update( |
|
|
|
('<@!%s>' % member.id, '@' + member.name) |
|
|
|
for member in message.mentions |
|
|
|
) |
|
|
|
|
|
|
|
transformations.update( |
|
|
|
('<@&%s>' % role.id, '@' + role.name) |
|
|
|
for role in message.role_mentions |
|
|
|
) |
|
|
|
|
|
|
|
def repl(obj): |
|
|
|
return transformations.get(obj.group(0), '') |
|
|
|
|
|
|
|
pattern = re.compile('|'.join(transformations.keys())) |
|
|
|
result = pattern.sub(repl, self.argument) |
|
|
|
|
|
|
|
transformations = { |
|
|
|
'@everyone': '@\u200beveryone', |
|
|
|
'@here': '@\u200bhere' |
|
|
|
} |
|
|
|
|
|
|
|
def repl2(obj): |
|
|
|
return transformations.get(obj.group(0), '') |
|
|
|
|
|
|
|
pattern = re.compile('|'.join(transformations.keys())) |
|
|
|
return pattern.sub(repl2, result) |
|
|
|