mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-21 18:27:59 -05:00
Output sanitisation (#1942)
* Add output sanitization defaults to context.send Add some common regex filters in redbot.core.utils.common_filters Add a wrapper for ease of use in bot.send_filtered Sanitize ModLog Case's user field (other's considered trusted as moderator input) Sanitize Usernames/Nicks in userinfo command. Santize Usernames in closing of tunnels. * Add documentation
This commit is contained in:
committed by
Toby Harradine
parent
6ebfdef025
commit
77944e195a
@@ -22,6 +22,7 @@ from . import Config, i18n, commands
|
||||
from .rpc import RPCMixin
|
||||
from .help_formatter import Help, help as help_
|
||||
from .sentry import SentryManager
|
||||
from .utils import common_filters
|
||||
|
||||
|
||||
def _is_submodule(parent, child):
|
||||
@@ -292,6 +293,39 @@ class RedBase(BotBase, RPCMixin):
|
||||
if pkg_name.startswith("redbot.cogs."):
|
||||
del sys.modules["redbot.cogs"].__dict__[name]
|
||||
|
||||
async def send_filtered(
|
||||
destination: discord.abc.Messageable,
|
||||
filter_mass_mentions=True,
|
||||
filter_invite_links=True,
|
||||
filter_all_links=False,
|
||||
**kwargs,
|
||||
):
|
||||
"""
|
||||
This is a convienience wrapper around
|
||||
|
||||
discord.abc.Messageable.send
|
||||
|
||||
It takes the destination you'd like to send to, which filters to apply
|
||||
(defaults on mass mentions, and invite links) and any other parameters
|
||||
normally accepted by destination.send
|
||||
|
||||
This should realistically only be used for responding using user provided
|
||||
input. (unfortunately, including usernames)
|
||||
Manually crafted messages which dont take any user input have no need of this
|
||||
"""
|
||||
|
||||
content = kwargs.pop("content", None)
|
||||
|
||||
if content:
|
||||
if filter_mass_mentions:
|
||||
content = common_filters.filter_mass_mentions(content)
|
||||
if filter_invite_links:
|
||||
content = common_filters.filter_invites(content)
|
||||
if filter_all_links:
|
||||
content = common_filters.filter_urls(content)
|
||||
|
||||
await destination.send(content=content, **kwargs)
|
||||
|
||||
def add_cog(self, cog):
|
||||
for attr in dir(cog):
|
||||
_attr = getattr(cog, attr)
|
||||
|
||||
Reference in New Issue
Block a user