mirror of
https://github.com/TitanEmbeds/Titan.git
synced 2024-12-24 14:07:03 +01:00
Add the ability to disallow words (banned words)
This commit is contained in:
parent
f0f1f226e3
commit
ccf9aed9ec
@ -21,6 +21,9 @@ class Guilds(Base):
|
|||||||
invite_link = db.Column(db.String(255)) # Custom Discord Invite Link
|
invite_link = db.Column(db.String(255)) # Custom Discord Invite Link
|
||||||
post_timeout = db.Column(db.Integer, nullable=False, server_default="5") # Seconds to elapse before another message can be posted from the widget
|
post_timeout = db.Column(db.Integer, nullable=False, server_default="5") # Seconds to elapse before another message can be posted from the widget
|
||||||
max_message_length = db.Column(db.Integer, nullable=False, server_default="300") # Chars length the message should be before being rejected by the server
|
max_message_length = db.Column(db.Integer, nullable=False, server_default="300") # Chars length the message should be before being rejected by the server
|
||||||
|
banned_words_enabled = db.Column(db.Boolean(), nullable=False, server_default="0") # If banned words are enforced
|
||||||
|
banned_words_global_included = db.Column(db.Boolean(), nullable=False, server_default="0") # Add global banned words to the list
|
||||||
|
banned_words = db.Column(db.Text(), nullable=False, server_default="[]") # JSON list of strings to block from sending
|
||||||
|
|
||||||
def __init__(self, guild_id, name, roles, channels, webhooks, emojis, owner_id, icon):
|
def __init__(self, guild_id, name, roles, channels, webhooks, emojis, owner_id, icon):
|
||||||
self.guild_id = guild_id
|
self.guild_id = guild_id
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
"""Add banned words columns
|
||||||
|
|
||||||
|
Revision ID: 8e806bcb2228
|
||||||
|
Revises: 176d26252734
|
||||||
|
Create Date: 2018-07-08 23:26:18.412175
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '8e806bcb2228'
|
||||||
|
down_revision = '176d26252734'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('guilds', sa.Column('banned_words', sa.Text(), server_default='[]', nullable=False))
|
||||||
|
op.add_column('guilds', sa.Column('banned_words_enabled', sa.Boolean(), server_default='0', nullable=False))
|
||||||
|
op.add_column('guilds', sa.Column('banned_words_global_included', sa.Boolean(), server_default='0', nullable=False))
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_column('guilds', 'banned_words_global_included')
|
||||||
|
op.drop_column('guilds', 'banned_words_enabled')
|
||||||
|
op.drop_column('guilds', 'banned_words')
|
||||||
|
# ### end Alembic commands ###
|
@ -75,6 +75,10 @@ def privacy():
|
|||||||
def vote():
|
def vote():
|
||||||
return render_template("discordbotsorg_vote.html.j2", referrer=request.args.get("referrer", None))
|
return render_template("discordbotsorg_vote.html.j2", referrer=request.args.get("referrer", None))
|
||||||
|
|
||||||
|
@app.route("/global_banned_words")
|
||||||
|
def global_banned_words():
|
||||||
|
return render_template("global_banned_words.html.j2")
|
||||||
|
|
||||||
@app.before_first_request
|
@app.before_first_request
|
||||||
def before_first_request():
|
def before_first_request():
|
||||||
discord_api.init_discordrest()
|
discord_api.init_discordrest()
|
||||||
|
@ -183,6 +183,9 @@ def administrate_guild(guild_id):
|
|||||||
"guest_icon": db_guild.guest_icon if db_guild.guest_icon != None else "",
|
"guest_icon": db_guild.guest_icon if db_guild.guest_icon != None else "",
|
||||||
"post_timeout": db_guild.post_timeout,
|
"post_timeout": db_guild.post_timeout,
|
||||||
"max_message_length": db_guild.max_message_length,
|
"max_message_length": db_guild.max_message_length,
|
||||||
|
"banned_words_enabled": db_guild.banned_words_enabled,
|
||||||
|
"banned_words_global_included": db_guild.banned_words_global_included,
|
||||||
|
"banned_words": json.loads(db_guild.banned_words),
|
||||||
}
|
}
|
||||||
return render_template("administrate_guild.html.j2", guild=dbguild_dict, members=users, permissions=permissions, cosmetics=cosmetics)
|
return render_template("administrate_guild.html.j2", guild=dbguild_dict, members=users, permissions=permissions, cosmetics=cosmetics)
|
||||||
|
|
||||||
@ -199,6 +202,8 @@ def update_administrate_guild(guild_id):
|
|||||||
db_guild.unauth_captcha = request.form.get("unauth_captcha", db_guild.unauth_captcha) in ["true", True]
|
db_guild.unauth_captcha = request.form.get("unauth_captcha", db_guild.unauth_captcha) in ["true", True]
|
||||||
db_guild.post_timeout = request.form.get("post_timeout", db_guild.post_timeout)
|
db_guild.post_timeout = request.form.get("post_timeout", db_guild.post_timeout)
|
||||||
db_guild.max_message_length = request.form.get("max_message_length", db_guild.max_message_length)
|
db_guild.max_message_length = request.form.get("max_message_length", db_guild.max_message_length)
|
||||||
|
db_guild.banned_words_enabled = request.form.get("banned_words_enabled", db_guild.banned_words_enabled) in ["true", True]
|
||||||
|
db_guild.banned_words_global_included = request.form.get("banned_words_global_included", db_guild.banned_words_global_included) in ["true", True]
|
||||||
invite_link = request.form.get("invite_link", db_guild.invite_link)
|
invite_link = request.form.get("invite_link", db_guild.invite_link)
|
||||||
if invite_link != None and invite_link.strip() == "":
|
if invite_link != None and invite_link.strip() == "":
|
||||||
invite_link = None
|
invite_link = None
|
||||||
@ -207,6 +212,15 @@ def update_administrate_guild(guild_id):
|
|||||||
if guest_icon != None and guest_icon.strip() == "":
|
if guest_icon != None and guest_icon.strip() == "":
|
||||||
guest_icon = None
|
guest_icon = None
|
||||||
db_guild.guest_icon = guest_icon
|
db_guild.guest_icon = guest_icon
|
||||||
|
banned_word = request.form.get("banned_word", None)
|
||||||
|
if banned_word:
|
||||||
|
delete_banned_word = request.form.get("delete_banned_word", False) in ["true", True]
|
||||||
|
banned_words = set(json.loads(db_guild.banned_words))
|
||||||
|
if delete_banned_word:
|
||||||
|
banned_words.discard(banned_word)
|
||||||
|
else:
|
||||||
|
banned_words.add(banned_word)
|
||||||
|
db_guild.banned_words = json.dumps(list(banned_words))
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
emit("guest_icon_change", {"guest_icon": guest_icon if guest_icon else url_for('static', filename='img/titanembeds_square.png')}, room="GUILD_"+guild_id, namespace="/gateway")
|
emit("guest_icon_change", {"guest_icon": guest_icon if guest_icon else url_for('static', filename='img/titanembeds_square.png')}, room="GUILD_"+guild_id, namespace="/gateway")
|
||||||
return jsonify(
|
return jsonify(
|
||||||
@ -222,6 +236,9 @@ def update_administrate_guild(guild_id):
|
|||||||
unauth_captcha=db_guild.unauth_captcha,
|
unauth_captcha=db_guild.unauth_captcha,
|
||||||
post_timeout=db_guild.post_timeout,
|
post_timeout=db_guild.post_timeout,
|
||||||
max_message_length=db_guild.max_message_length,
|
max_message_length=db_guild.max_message_length,
|
||||||
|
banned_words_enabled=db_guild.banned_words_enabled,
|
||||||
|
banned_words_global_included=db_guild.banned_words_global_included,
|
||||||
|
banned_words=json.loads(db_guild.banned_words),
|
||||||
)
|
)
|
||||||
|
|
||||||
@admin.route("/guilds")
|
@admin.route("/guilds")
|
||||||
|
@ -2,6 +2,7 @@ from titanembeds.database import db, Guilds, UnauthenticatedUsers, Unauthenticat
|
|||||||
from titanembeds.decorators import valid_session_required, discord_users_only, abort_if_guild_disabled
|
from titanembeds.decorators import valid_session_required, discord_users_only, abort_if_guild_disabled
|
||||||
from titanembeds.utils import check_guild_existance, guild_accepts_visitors, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, user_unauthenticated, checkUserRevoke, checkUserBanned, update_user_status, check_user_in_guild, get_guild_channels, guild_webhooks_enabled, guild_unauthcaptcha_enabled, get_member_roles, get_online_embed_user_keys, redis_store
|
from titanembeds.utils import check_guild_existance, guild_accepts_visitors, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, user_unauthenticated, checkUserRevoke, checkUserBanned, update_user_status, check_user_in_guild, get_guild_channels, guild_webhooks_enabled, guild_unauthcaptcha_enabled, get_member_roles, get_online_embed_user_keys, redis_store
|
||||||
from titanembeds.oauth import user_has_permission, generate_avatar_url, check_user_can_administrate_guild
|
from titanembeds.oauth import user_has_permission, generate_avatar_url, check_user_can_administrate_guild
|
||||||
|
import titanembeds.constants as constants
|
||||||
from flask import Blueprint, abort, jsonify, session, request, url_for
|
from flask import Blueprint, abort, jsonify, session, request, url_for
|
||||||
from flask import current_app as app
|
from flask import current_app as app
|
||||||
from flask_socketio import emit
|
from flask_socketio import emit
|
||||||
@ -61,6 +62,17 @@ def format_post_content(guild_id, channel_id, message, dbUser):
|
|||||||
mention = "<@" + match[2: len(match) - 1] + ">"
|
mention = "<@" + match[2: len(match) - 1] + ">"
|
||||||
message = message.replace(match, mention, 1)
|
message = message.replace(match, mention, 1)
|
||||||
|
|
||||||
|
if dbguild.banned_words_enabled:
|
||||||
|
banned_words = set(json.loads(dbguild.banned_words))
|
||||||
|
if dbguild.banned_words_global_included:
|
||||||
|
banned_words = banned_words.union(set(constants.GLOBAL_BANNED_WORDS))
|
||||||
|
for word in banned_words:
|
||||||
|
word_boundaried = r"\b%s\b" % word
|
||||||
|
regex = re.compile(word_boundaried, re.IGNORECASE)
|
||||||
|
if regex.match(message):
|
||||||
|
illegal_post = True
|
||||||
|
illegal_reasons.append("The following word is prohibited: " + word)
|
||||||
|
|
||||||
if not guild_webhooks_enabled(guild_id):
|
if not guild_webhooks_enabled(guild_id):
|
||||||
if (session['unauthenticated']):
|
if (session['unauthenticated']):
|
||||||
message = u"**[{}#{}]** {}".format(session['username'], session['user_id'], message)
|
message = u"**[{}#{}]** {}".format(session['username'], session['user_id'], message)
|
||||||
|
@ -219,6 +219,9 @@ def administrate_guild(guild_id):
|
|||||||
"guest_icon": db_guild.guest_icon if db_guild.guest_icon != None else "",
|
"guest_icon": db_guild.guest_icon if db_guild.guest_icon != None else "",
|
||||||
"post_timeout": db_guild.post_timeout,
|
"post_timeout": db_guild.post_timeout,
|
||||||
"max_message_length": db_guild.max_message_length,
|
"max_message_length": db_guild.max_message_length,
|
||||||
|
"banned_words_enabled": db_guild.banned_words_enabled,
|
||||||
|
"banned_words_global_included": db_guild.banned_words_global_included,
|
||||||
|
"banned_words": json.loads(db_guild.banned_words),
|
||||||
}
|
}
|
||||||
return render_template("administrate_guild.html.j2", guild=dbguild_dict, members=users, permissions=permissions, cosmetics=cosmetics, disabled=(guild_id in list_disabled_guilds()))
|
return render_template("administrate_guild.html.j2", guild=dbguild_dict, members=users, permissions=permissions, cosmetics=cosmetics, disabled=(guild_id in list_disabled_guilds()))
|
||||||
|
|
||||||
@ -243,6 +246,8 @@ def update_administrate_guild(guild_id):
|
|||||||
db_guild.unauth_captcha = request.form.get("unauth_captcha", db_guild.unauth_captcha) in ["true", True]
|
db_guild.unauth_captcha = request.form.get("unauth_captcha", db_guild.unauth_captcha) in ["true", True]
|
||||||
db_guild.post_timeout = request.form.get("post_timeout", db_guild.post_timeout)
|
db_guild.post_timeout = request.form.get("post_timeout", db_guild.post_timeout)
|
||||||
db_guild.max_message_length = request.form.get("max_message_length", db_guild.max_message_length)
|
db_guild.max_message_length = request.form.get("max_message_length", db_guild.max_message_length)
|
||||||
|
db_guild.banned_words_enabled = request.form.get("banned_words_enabled", db_guild.banned_words_enabled) in ["true", True]
|
||||||
|
db_guild.banned_words_global_included = request.form.get("banned_words_global_included", db_guild.banned_words_global_included) in ["true", True]
|
||||||
|
|
||||||
invite_link = request.form.get("invite_link", db_guild.invite_link)
|
invite_link = request.form.get("invite_link", db_guild.invite_link)
|
||||||
if invite_link != None and invite_link.strip() == "":
|
if invite_link != None and invite_link.strip() == "":
|
||||||
@ -254,6 +259,16 @@ def update_administrate_guild(guild_id):
|
|||||||
guest_icon = None
|
guest_icon = None
|
||||||
db_guild.guest_icon = guest_icon
|
db_guild.guest_icon = guest_icon
|
||||||
|
|
||||||
|
banned_word = request.form.get("banned_word", None)
|
||||||
|
if banned_word:
|
||||||
|
delete_banned_word = request.form.get("delete_banned_word", False) in ["true", True]
|
||||||
|
banned_words = set(json.loads(db_guild.banned_words))
|
||||||
|
if delete_banned_word:
|
||||||
|
banned_words.discard(banned_word)
|
||||||
|
else:
|
||||||
|
banned_words.add(banned_word)
|
||||||
|
db_guild.banned_words = json.dumps(list(banned_words))
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
emit("guest_icon_change", {"guest_icon": guest_icon if guest_icon else url_for('static', filename='img/titanembeds_square.png')}, room="GUILD_"+guild_id, namespace="/gateway")
|
emit("guest_icon_change", {"guest_icon": guest_icon if guest_icon else url_for('static', filename='img/titanembeds_square.png')}, room="GUILD_"+guild_id, namespace="/gateway")
|
||||||
return jsonify(
|
return jsonify(
|
||||||
@ -269,6 +284,9 @@ def update_administrate_guild(guild_id):
|
|||||||
unauth_captcha=db_guild.unauth_captcha,
|
unauth_captcha=db_guild.unauth_captcha,
|
||||||
post_timeout=db_guild.post_timeout,
|
post_timeout=db_guild.post_timeout,
|
||||||
max_message_length=db_guild.max_message_length,
|
max_message_length=db_guild.max_message_length,
|
||||||
|
banned_words_enabled=db_guild.banned_words_enabled,
|
||||||
|
banned_words_global_included=db_guild.banned_words_global_included,
|
||||||
|
banned_words=json.loads(db_guild.banned_words),
|
||||||
)
|
)
|
||||||
|
|
||||||
@user.route("/add-bot/<guild_id>")
|
@user.route("/add-bot/<guild_id>")
|
||||||
|
@ -427,3 +427,415 @@ LANGUAGES = [
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Original list adopted from https://github.com/areebbeigh/profanityfilter/blob/master/profanityfilter/data/badwords.txt
|
||||||
|
GLOBAL_BANNED_WORDS = [
|
||||||
|
"@$$",
|
||||||
|
"ahole",
|
||||||
|
"amcik",
|
||||||
|
"andskota",
|
||||||
|
"anus",
|
||||||
|
"arschloch",
|
||||||
|
"arse",
|
||||||
|
"ash0le",
|
||||||
|
"ash0les",
|
||||||
|
"asholes",
|
||||||
|
"ass",
|
||||||
|
"assface",
|
||||||
|
"assh0le",
|
||||||
|
"assh0lez",
|
||||||
|
"asshole",
|
||||||
|
"assholes",
|
||||||
|
"assholz",
|
||||||
|
"assmonkey",
|
||||||
|
"assrammer",
|
||||||
|
"asswipe",
|
||||||
|
"ayir",
|
||||||
|
"azzhole",
|
||||||
|
"b00bs",
|
||||||
|
"b17ch",
|
||||||
|
"b1tch",
|
||||||
|
"bassterds",
|
||||||
|
"bastard",
|
||||||
|
"bastards",
|
||||||
|
"bastardz",
|
||||||
|
"basterds",
|
||||||
|
"basterdz",
|
||||||
|
"bch",
|
||||||
|
"bi7ch",
|
||||||
|
"biatch",
|
||||||
|
"bich",
|
||||||
|
"bitch",
|
||||||
|
"bitches",
|
||||||
|
"blowjob",
|
||||||
|
"boffing",
|
||||||
|
"boiolas",
|
||||||
|
"bollock",
|
||||||
|
"boobs",
|
||||||
|
"breasts",
|
||||||
|
"btch",
|
||||||
|
"buceta",
|
||||||
|
"bullshit",
|
||||||
|
"butthole",
|
||||||
|
"buttpirate",
|
||||||
|
"buttwipe",
|
||||||
|
"c0ck",
|
||||||
|
"c0cks",
|
||||||
|
"c0k",
|
||||||
|
"cabron",
|
||||||
|
"carpetmuncher",
|
||||||
|
"cawk",
|
||||||
|
"cawks",
|
||||||
|
"cazzo",
|
||||||
|
"chink",
|
||||||
|
"chraa",
|
||||||
|
"chuj",
|
||||||
|
"cipa",
|
||||||
|
"clit",
|
||||||
|
"clits",
|
||||||
|
"cnts",
|
||||||
|
"cntz",
|
||||||
|
"cock",
|
||||||
|
"cockhead",
|
||||||
|
"cocks",
|
||||||
|
"cocksucker",
|
||||||
|
"crap",
|
||||||
|
"cum",
|
||||||
|
"cunt",
|
||||||
|
"cunts",
|
||||||
|
"cuntz",
|
||||||
|
"d4mn",
|
||||||
|
"damn",
|
||||||
|
"daygo",
|
||||||
|
"dego",
|
||||||
|
"dick",
|
||||||
|
"dike",
|
||||||
|
"dild0",
|
||||||
|
"dild0s",
|
||||||
|
"dildo",
|
||||||
|
"dildos",
|
||||||
|
"dilld0",
|
||||||
|
"dilld0s",
|
||||||
|
"dirsa",
|
||||||
|
"dominatricks",
|
||||||
|
"dominatrics",
|
||||||
|
"dominatrix",
|
||||||
|
"dupa",
|
||||||
|
"dyke",
|
||||||
|
"dziwka",
|
||||||
|
"ejackulate",
|
||||||
|
"ejakulate",
|
||||||
|
"ekrem",
|
||||||
|
"ekto",
|
||||||
|
"enculer",
|
||||||
|
"enema",
|
||||||
|
"faen",
|
||||||
|
"fag",
|
||||||
|
"fag1t",
|
||||||
|
"faget",
|
||||||
|
"fagg1t",
|
||||||
|
"faggit",
|
||||||
|
"faggot",
|
||||||
|
"fagit",
|
||||||
|
"fags",
|
||||||
|
"fagz",
|
||||||
|
"faig",
|
||||||
|
"faigs",
|
||||||
|
"fanculo",
|
||||||
|
"fanny",
|
||||||
|
"fart",
|
||||||
|
"fatass",
|
||||||
|
"fcuk",
|
||||||
|
"feces",
|
||||||
|
"feg",
|
||||||
|
"felcher",
|
||||||
|
"ficken",
|
||||||
|
"fitt",
|
||||||
|
"flikker",
|
||||||
|
"flipping",
|
||||||
|
"foreskin",
|
||||||
|
"fotze",
|
||||||
|
"fu",
|
||||||
|
"fuchah",
|
||||||
|
"fuck",
|
||||||
|
"fucka",
|
||||||
|
"fucker",
|
||||||
|
"fuckin",
|
||||||
|
"fucking",
|
||||||
|
"fucks",
|
||||||
|
"fudgepacker",
|
||||||
|
"fuk",
|
||||||
|
"fukah",
|
||||||
|
"fuken",
|
||||||
|
"fuker",
|
||||||
|
"fukin",
|
||||||
|
"fukk",
|
||||||
|
"fukka",
|
||||||
|
"fukkah",
|
||||||
|
"fukken",
|
||||||
|
"fukker",
|
||||||
|
"fukkin",
|
||||||
|
"futkretzn",
|
||||||
|
"fux0r",
|
||||||
|
"g00k",
|
||||||
|
"gay",
|
||||||
|
"gaybor",
|
||||||
|
"gayboy",
|
||||||
|
"gaygirl",
|
||||||
|
"gays",
|
||||||
|
"gayz",
|
||||||
|
"goddamned",
|
||||||
|
"gook",
|
||||||
|
"guiena",
|
||||||
|
"h00r",
|
||||||
|
"h0ar",
|
||||||
|
"h0r",
|
||||||
|
"h0re",
|
||||||
|
"h4x0r",
|
||||||
|
"hell",
|
||||||
|
"hells",
|
||||||
|
"helvete",
|
||||||
|
"hoar",
|
||||||
|
"hoer",
|
||||||
|
"honkey",
|
||||||
|
"hoor",
|
||||||
|
"hoore",
|
||||||
|
"hore",
|
||||||
|
"huevon",
|
||||||
|
"hui",
|
||||||
|
"injun",
|
||||||
|
"jackoff",
|
||||||
|
"jap",
|
||||||
|
"japs",
|
||||||
|
"jerkoff",
|
||||||
|
"jisim",
|
||||||
|
"jism",
|
||||||
|
"jiss",
|
||||||
|
"jizm",
|
||||||
|
"jizz",
|
||||||
|
"kanker",
|
||||||
|
"kawk",
|
||||||
|
"kike",
|
||||||
|
"klootzak",
|
||||||
|
"knob",
|
||||||
|
"knobs",
|
||||||
|
"knobz",
|
||||||
|
"knulle",
|
||||||
|
"kraut",
|
||||||
|
"kuk",
|
||||||
|
"kuksuger",
|
||||||
|
"kunt",
|
||||||
|
"kunts",
|
||||||
|
"kuntz",
|
||||||
|
"kurac",
|
||||||
|
"kurwa",
|
||||||
|
"kusi",
|
||||||
|
"kyrpa",
|
||||||
|
"l3i+ch",
|
||||||
|
"l3itch",
|
||||||
|
"lesbian",
|
||||||
|
"lesbo",
|
||||||
|
"lezzian",
|
||||||
|
"lipshits",
|
||||||
|
"lipshitz",
|
||||||
|
"mamhoon",
|
||||||
|
"masochist",
|
||||||
|
"masokist",
|
||||||
|
"massterbait",
|
||||||
|
"masstrbait",
|
||||||
|
"masstrbate",
|
||||||
|
"masterbaiter",
|
||||||
|
"masterbat",
|
||||||
|
"masterbat3",
|
||||||
|
"masterbate",
|
||||||
|
"masterbates",
|
||||||
|
"masturbat",
|
||||||
|
"masturbate",
|
||||||
|
"merd",
|
||||||
|
"mibun",
|
||||||
|
"mofo",
|
||||||
|
"monkleigh",
|
||||||
|
"motha",
|
||||||
|
"mothafucker",
|
||||||
|
"mothafuker",
|
||||||
|
"mothafukkah",
|
||||||
|
"mothafukker",
|
||||||
|
"motherfucker",
|
||||||
|
"motherfukah",
|
||||||
|
"motherfuker",
|
||||||
|
"motherfukkah",
|
||||||
|
"motherfukker",
|
||||||
|
"mouliewop",
|
||||||
|
"muie",
|
||||||
|
"mulkku",
|
||||||
|
"muschi",
|
||||||
|
"mutha",
|
||||||
|
"muthafucker",
|
||||||
|
"muthafukah",
|
||||||
|
"muthafuker",
|
||||||
|
"muthafukkah",
|
||||||
|
"muthafukker",
|
||||||
|
"n1gr",
|
||||||
|
"nastt",
|
||||||
|
"nasty",
|
||||||
|
"nazi",
|
||||||
|
"nazis",
|
||||||
|
"nepesaurio",
|
||||||
|
"nigga",
|
||||||
|
"niggas",
|
||||||
|
"nigger",
|
||||||
|
"nigur",
|
||||||
|
"niiger",
|
||||||
|
"niigr",
|
||||||
|
"nutsack",
|
||||||
|
"orafis",
|
||||||
|
"orgasim",
|
||||||
|
"orgasm",
|
||||||
|
"orgasum",
|
||||||
|
"oriface",
|
||||||
|
"orifice",
|
||||||
|
"orifiss",
|
||||||
|
"orospu",
|
||||||
|
"p0rn",
|
||||||
|
"packi",
|
||||||
|
"packie",
|
||||||
|
"packy",
|
||||||
|
"paki",
|
||||||
|
"pakie",
|
||||||
|
"paky",
|
||||||
|
"paska",
|
||||||
|
"pecker",
|
||||||
|
"peeenus",
|
||||||
|
"peeenusss",
|
||||||
|
"peenus",
|
||||||
|
"peinus",
|
||||||
|
"pen1s",
|
||||||
|
"penas",
|
||||||
|
"penis",
|
||||||
|
"penisbreath",
|
||||||
|
"penus",
|
||||||
|
"penuus",
|
||||||
|
"perse",
|
||||||
|
"phuc",
|
||||||
|
"phuck",
|
||||||
|
"phuk",
|
||||||
|
"phuker",
|
||||||
|
"phukker",
|
||||||
|
"picka",
|
||||||
|
"pierdol",
|
||||||
|
"pillu",
|
||||||
|
"pimmel",
|
||||||
|
"pimpis",
|
||||||
|
"piss",
|
||||||
|
"pizda",
|
||||||
|
"polac",
|
||||||
|
"polack",
|
||||||
|
"polak",
|
||||||
|
"poonani",
|
||||||
|
"poontsee",
|
||||||
|
"poop",
|
||||||
|
"porn",
|
||||||
|
"pr0n",
|
||||||
|
"pr1c",
|
||||||
|
"pr1ck",
|
||||||
|
"pr1k",
|
||||||
|
"preteen",
|
||||||
|
"pula",
|
||||||
|
"pule",
|
||||||
|
"pusse",
|
||||||
|
"pussee",
|
||||||
|
"pussy",
|
||||||
|
"puta",
|
||||||
|
"puto",
|
||||||
|
"puuke",
|
||||||
|
"puuker",
|
||||||
|
"qahbeh",
|
||||||
|
"queef",
|
||||||
|
"queer",
|
||||||
|
"queers",
|
||||||
|
"queerz",
|
||||||
|
"qweers",
|
||||||
|
"qweerz",
|
||||||
|
"qweir",
|
||||||
|
"rautenberg",
|
||||||
|
"recktum",
|
||||||
|
"rectum",
|
||||||
|
"retard",
|
||||||
|
"s.o.b.",
|
||||||
|
"sadist",
|
||||||
|
"scank",
|
||||||
|
"schaffer",
|
||||||
|
"scheiss",
|
||||||
|
"schlampe",
|
||||||
|
"schlong",
|
||||||
|
"schmuck",
|
||||||
|
"screw",
|
||||||
|
"screwing",
|
||||||
|
"scrotum",
|
||||||
|
"semen",
|
||||||
|
"sex",
|
||||||
|
"sexx",
|
||||||
|
"sexxx",
|
||||||
|
"sexy",
|
||||||
|
"sh1t",
|
||||||
|
"sh1ter",
|
||||||
|
"sh1ts",
|
||||||
|
"sh1tter",
|
||||||
|
"sh1tz",
|
||||||
|
"sharmuta",
|
||||||
|
"sharmute",
|
||||||
|
"shemale",
|
||||||
|
"shi+",
|
||||||
|
"shipal",
|
||||||
|
"shit",
|
||||||
|
"shits",
|
||||||
|
"shitt",
|
||||||
|
"shitter",
|
||||||
|
"shitty",
|
||||||
|
"shity",
|
||||||
|
"shitz",
|
||||||
|
"shiz",
|
||||||
|
"sht",
|
||||||
|
"shyt",
|
||||||
|
"shyte",
|
||||||
|
"shytty",
|
||||||
|
"skanck",
|
||||||
|
"skank",
|
||||||
|
"skankee",
|
||||||
|
"skankey",
|
||||||
|
"skanks",
|
||||||
|
"skanky",
|
||||||
|
"skrib",
|
||||||
|
"slut",
|
||||||
|
"sluts",
|
||||||
|
"slutty",
|
||||||
|
"slutz",
|
||||||
|
"smut",
|
||||||
|
"sonofabitch",
|
||||||
|
"sx",
|
||||||
|
"teets",
|
||||||
|
"teez",
|
||||||
|
"testical",
|
||||||
|
"testicle",
|
||||||
|
"tit",
|
||||||
|
"tits",
|
||||||
|
"titt",
|
||||||
|
"turd",
|
||||||
|
"va1jina",
|
||||||
|
"vag1na",
|
||||||
|
"vagiina",
|
||||||
|
"vagina",
|
||||||
|
"vaj1na",
|
||||||
|
"vajina",
|
||||||
|
"vullva",
|
||||||
|
"vulva",
|
||||||
|
"w00se",
|
||||||
|
"w0p",
|
||||||
|
"wank",
|
||||||
|
"wh00r",
|
||||||
|
"wh0re",
|
||||||
|
"whoar",
|
||||||
|
"whore",
|
||||||
|
"xrated",
|
||||||
|
"xxx",
|
||||||
|
]
|
@ -21,6 +21,9 @@ class Guilds(db.Model):
|
|||||||
invite_link = db.Column(db.String(255)) # Custom Discord Invite Link
|
invite_link = db.Column(db.String(255)) # Custom Discord Invite Link
|
||||||
post_timeout = db.Column(db.Integer, nullable=False, server_default="5") # Seconds to elapse before another message can be posted from the widget
|
post_timeout = db.Column(db.Integer, nullable=False, server_default="5") # Seconds to elapse before another message can be posted from the widget
|
||||||
max_message_length = db.Column(db.Integer, nullable=False, server_default="300") # Chars length the message should be before being rejected by the server
|
max_message_length = db.Column(db.Integer, nullable=False, server_default="300") # Chars length the message should be before being rejected by the server
|
||||||
|
banned_words_enabled = db.Column(db.Boolean(), nullable=False, server_default="0") # If banned words are enforced
|
||||||
|
banned_words_global_included = db.Column(db.Boolean(), nullable=False, server_default="0") # Add global banned words to the list
|
||||||
|
banned_words = db.Column(db.Text(), nullable=False, server_default="[]") # JSON list of strings to block from sending
|
||||||
|
|
||||||
def __init__(self, guild_id, name, roles, channels, webhooks, emojis, owner_id, icon):
|
def __init__(self, guild_id, name, roles, channels, webhooks, emojis, owner_id, icon):
|
||||||
self.guild_id = guild_id
|
self.guild_id = guild_id
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
$('.chips').material_chip();
|
||||||
|
|
||||||
$('#unauth_users').change(function() {
|
$('#unauth_users').change(function() {
|
||||||
var pathname = window.location.pathname;
|
var pathname = window.location.pathname;
|
||||||
var checked = $(this).is(':checked')
|
var checked = $(this).is(':checked')
|
||||||
@ -107,6 +109,51 @@ $('#unauth_captcha').change(function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#banned_words_enabled').change(function() {
|
||||||
|
var pathname = window.location.pathname;
|
||||||
|
var checked = $(this).is(':checked')
|
||||||
|
var payload = {"banned_words_enabled": checked}
|
||||||
|
$.post(pathname, payload, function(data) {
|
||||||
|
Materialize.toast('Updated Banned Words setting!', 2000)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#banned_words_global_included').change(function() {
|
||||||
|
var pathname = window.location.pathname;
|
||||||
|
var checked = $(this).is(':checked')
|
||||||
|
var payload = {"banned_words_global_included": checked}
|
||||||
|
$.post(pathname, payload, function(data) {
|
||||||
|
Materialize.toast('Updated Banned Words Global setting!', 2000)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var banned_words_data = [];
|
||||||
|
for (var i = 0; i < BANNED_WORDS.length; i++) {
|
||||||
|
banned_words_data.push({
|
||||||
|
tag: BANNED_WORDS[i]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#banned_words').material_chip({
|
||||||
|
data: banned_words_data,
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#banned_words').on('chip.add', function(e, chip){
|
||||||
|
add_delete_banned_words("add", chip.tag);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#banned_words').on('chip.delete', function(e, chip){
|
||||||
|
add_delete_banned_words("delete", chip.tag);
|
||||||
|
});
|
||||||
|
|
||||||
|
function add_delete_banned_words(action, word) {
|
||||||
|
var pathname = window.location.pathname;
|
||||||
|
var payload = {"banned_word": word, "delete_banned_word": action == "delete"}
|
||||||
|
$.post(pathname, payload, function(data) {
|
||||||
|
Materialize.toast('Updated Banned Words list!', 2000)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function initiate_ban(guild_id, user_id) {
|
function initiate_ban(guild_id, user_id) {
|
||||||
var reason = prompt("Please enter your reason for ban");
|
var reason = prompt("Please enter your reason for ban");
|
||||||
var payload = {
|
var payload = {
|
||||||
|
@ -161,6 +161,31 @@
|
|||||||
<p class="red lighten-4"><strong>Your user account does not have access to change guest avatar url. Please visit the Titan Tokens shop to activate this cosmetic item.</strong></p>
|
<p class="red lighten-4"><strong>Your user account does not have access to change guest avatar url. Please visit the Titan Tokens shop to activate this cosmetic item.</strong></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<input id="guest_icon" value="{{ guild['guest_icon'] }}" {% if not cosmetics.guest_icon %}disabled{% endif %}>
|
<input id="guest_icon" value="{{ guild['guest_icon'] }}" {% if not cosmetics.guest_icon %}disabled{% endif %}>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p class="flow-text">Banned Words
|
||||||
|
<span class="switch">
|
||||||
|
<label>
|
||||||
|
Disable
|
||||||
|
<input type="checkbox" id="banned_words_enabled" name="banned_words_enabled" {% if guild['banned_words_enabled'] %}checked{% endif %} >
|
||||||
|
<span class="lever"></span>
|
||||||
|
Enable
|
||||||
|
</label>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<p>Prevent users from sending messages from the embed containing these words.</p>
|
||||||
|
<div class="switch">
|
||||||
|
<span>Include <a href="{{ url_for("global_banned_words") }}" target="_blank">Global Banned Words</a> to the list</span>
|
||||||
|
<label>
|
||||||
|
Disable
|
||||||
|
<input type="checkbox" id="banned_words_global_included" name="banned_words_global_included" {% if guild['banned_words_global_included'] %}checked{% endif %} >
|
||||||
|
<span class="lever"></span>
|
||||||
|
Enable
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<p>(Hit enter after each word to add to list)</p>
|
||||||
|
<div id="banned_words" class="chips"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -240,5 +265,8 @@
|
|||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
|
<script>
|
||||||
|
const BANNED_WORDS = {{ guild["banned_words"]|tojson|safe }};
|
||||||
|
</script>
|
||||||
<script type="text/javascript" src="{{ url_for('static', filename='js/administrate_guild.js') }}"></script>
|
<script type="text/javascript" src="{{ url_for('static', filename='js/administrate_guild.js') }}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
25
webapp/titanembeds/templates/global_banned_words.html.j2
Normal file
25
webapp/titanembeds/templates/global_banned_words.html.j2
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{% extends 'site_layout.html.j2' %}
|
||||||
|
{% set title="Global Banned Words" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Global Banned Words</h1>
|
||||||
|
<p class="flow-text">These following words are predefined as the global banned words for those who want a sqeaky clean server.</p>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
<div class="card horizontal black-text indigo lighten-5 z-depth-3 hoverable">
|
||||||
|
<div class="card-stacked">
|
||||||
|
<div class="card-content">
|
||||||
|
<p>Upon enforcing banned words along with the <strong>global</strong> banned words (both are enabled in your server dashboard), any messages sent via the embeds that contain these words will be prevented to be sent.</p>
|
||||||
|
<p>If you have any suggestions on adding more profane words to the global list, feel free to open a pull request and modify <a href="https://github.com/TitanEmbeds/Titan/blob/master/webapp/titanembeds/constants.py" target="_blank">this file.</a></p>
|
||||||
|
<hr>
|
||||||
|
<ol>
|
||||||
|
{% for word in constants.GLOBAL_BANNED_WORDS %}
|
||||||
|
<li>{{ word }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user