From be890bbba0540493c7b916f72f4a95c2eb6a0b52 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Wed, 6 Aug 2025 16:17:43 +0200 Subject: [PATCH] don't allow bad names in names --- bad/create.sh | 130 ++ bad/merged_output.txt | 3223 +++++++++++++++++++++++++++++++++++++++++ src/game.rs | 1 + src/main.rs | 40 +- 4 files changed, 3393 insertions(+), 1 deletion(-) create mode 100755 bad/create.sh create mode 100644 bad/merged_output.txt diff --git a/bad/create.sh b/bad/create.sh new file mode 100755 index 0000000..2c190da --- /dev/null +++ b/bad/create.sh @@ -0,0 +1,130 @@ +#!/bin/bash + +# Fetch and merge text and JSON files from URLs +# Usage: ./create.sh [output_file] + +OUTPUT_FILE="${1:-merged_output.txt}" +TEMP_DIR=$(mktemp -d) +FINAL_TEMP="$TEMP_DIR/combined.txt" + +# Color codes for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# ============================================================================= +# CONFIGURE YOUR URLS AND COMMENTS HERE +# ============================================================================= + +URLS_AND_COMMENTS=( + "https://raw.githubusercontent.com/dsojevic/profanity-list/refs/heads/main/en.txt" + "https://raw.githubusercontent.com/dsojevic/profanity-list/refs/heads/main/emoji.txt" + "https://raw.githubusercontent.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/refs/heads/master/de" + "https://raw.githubusercontent.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/refs/heads/master/en" + "https://raw.githubusercontent.com/zacanger/profane-words/refs/heads/master/words.json" +) + +# ============================================================================= + +# Check if jq is available for JSON processing +if ! command -v jq &> /dev/null; then + echo -e "${YELLOW}Warning: jq not found. JSON files will be skipped.${NC}" + echo -e "${YELLOW}Install jq with: apt-get install jq (Ubuntu/Debian) or brew install jq (macOS)${NC}" + HAS_JQ=false +else + HAS_JQ=true +fi + +echo -e "${GREEN}Text/JSON File Merger${NC}" +echo "Processing $(echo "${URLS_AND_COMMENTS[@]}" | grep -c 'https://' || true) URLs..." + +# Process URLs and comments +for line in "${URLS_AND_COMMENTS[@]}"; do + # Handle comments + if [[ "$line" =~ ^[[:space:]]*# ]]; then + echo "$line" >> "$FINAL_TEMP" + continue + fi + + # Skip lines that don't look like URLs + if [[ ! "$line" =~ ^https?:// ]]; then + continue + fi + + echo -e "${YELLOW}Fetching: $line${NC}" + + # Create temporary file for this URL + URL_TEMP="$TEMP_DIR/url_content.tmp" + + # Fetch the URL + if curl -s -f "$line" -o "$URL_TEMP" 2>/dev/null; then + echo -e "${GREEN}✓ Successfully fetched${NC}" + + # Check if the content is JSON + if [ "$HAS_JQ" = true ] && jq empty "$URL_TEMP" 2>/dev/null; then + echo -e "${BLUE} → Detected JSON format, extracting strings...${NC}" + + # Try to extract strings from JSON array or object + # Handle different JSON structures + if jq -e 'type == "array"' "$URL_TEMP" >/dev/null 2>&1; then + # JSON array - extract all string values + jq -r '.[] | select(type == "string")' "$URL_TEMP" >> "$FINAL_TEMP" 2>/dev/null || { + echo -e "${RED} ✗ Failed to parse JSON array${NC}" + echo "# ERROR: Could not parse JSON from $line" >> "$FINAL_TEMP" + } + elif jq -e 'type == "object"' "$URL_TEMP" >/dev/null 2>&1; then + # JSON object - extract all string values + jq -r 'recurse | select(type == "string")' "$URL_TEMP" >> "$FINAL_TEMP" 2>/dev/null || { + echo -e "${RED} ✗ Failed to parse JSON object${NC}" + echo "# ERROR: Could not parse JSON from $line" >> "$FINAL_TEMP" + } + else + echo -e "${RED} ✗ Unsupported JSON structure${NC}" + echo "# ERROR: Unsupported JSON structure from $line" >> "$FINAL_TEMP" + fi + else + # Regular text file - append as-is + echo -e "${BLUE} → Processing as text file...${NC}" + cat "$URL_TEMP" >> "$FINAL_TEMP" + fi + + # Clean up URL temp file + rm -f "$URL_TEMP" + else + echo -e "${RED}✗ Failed to fetch: $line${NC}" + echo "# ERROR: Could not fetch $line" >> "$FINAL_TEMP" + fi +done + +# Check if we have any content +if [ ! -s "$FINAL_TEMP" ]; then + echo -e "${RED}No content to process${NC}" + rm -rf "$TEMP_DIR" + exit 1 +fi + +echo -e "${YELLOW}Processing content...${NC}" + +# Remove duplicates, sort alphabetically, and save to output file +# Keep comments at the top, sort the rest +{ + grep '^#' "$FINAL_TEMP" 2>/dev/null || true + grep -v '^#' "$FINAL_TEMP" 2>/dev/null | grep -v '^[[:space:]]*$' | sort -u +} > "$OUTPUT_FILE" + +# Cleanup +rm -rf "$TEMP_DIR" + +# Show results +line_count=$(wc -l < "$OUTPUT_FILE") +echo -e "${GREEN}✓ Complete! Merged content saved to: $OUTPUT_FILE${NC}" +echo -e "${GREEN}Total lines: $line_count${NC}" + +# Show a preview of the content +if [ -s "$OUTPUT_FILE" ]; then + echo -e "${YELLOW}Preview (first 10 non-comment lines):${NC}" + grep -v '^#' "$OUTPUT_FILE" | head -10 +fi + diff --git a/bad/merged_output.txt b/bad/merged_output.txt new file mode 100644 index 0000000..615d82a --- /dev/null +++ b/bad/merged_output.txt @@ -0,0 +1,3223 @@ +🤩🍆💦 +​🖕​🤬​🖕​ +✊🍆 +✊🍆💦 +✊🍌 +✊🍌💦 +🍆🍑💦 +🍆👅💦 +🍆👋💦 +🍆💦 +🐓💍 +👉🌮 +👉👌 +👌👈 +👐🍅🍅 +🖕 +@$$ +1m1j +1 man 1 jar +1man1jar +2g1c +2 girls 1 cup +2girls1cup +4r5e +5h1t +5hit +5ht +a55 +a55hole +abbo +abeed +abuse +acrotomophile +acrotomophilia +africoon +ahole +alabama hot pocket +alabama tuna melt +alaskan pipeline +algophile +algophilia +alligator bait +alligatorbait +amcik +anal +analannie +anal assassin +anal astronaut +analprobe +🤬​🖕analritter +analsex +andskota +anilingus +anus +ape shit +ape-shit +apeshit +apotemnophile +apotemnophilia +ar5e +arabush +arabushs +areola +areole +argie +armo +armos +arrse +arsch +arschficker +arschlecker +arschloch +arse +arse bandit +arsehole +aryan +ash0le +ash0les +asholes +a s s +a_s_s +ass +assbag +assbagger +ass bandit +assbandit +assbang +assbanged +assbanger +assbangs +assbite +assblaster +assclown +asscock +asscowboy +asscracker +asses +assface +assfuck +ass-fucker +assfucker +assfukka +assgoblin +assh0le +assh0lez +ass-hat +asshat +asshead +assho1e +a s shole +asshole +assholes +assholz +asshopper +asshore +assjacker +assjockey +asskiss +asskisser +assklown +asslick +asslicker +asslover +assman +assmaster +ass monkey +assmonkey +assmunch +assmuncher +assnigger +asspacker +ass-pirate +asspirate +asspuppies +assrammer +assranger +assshit +assshole +asssucker +asswad +asswhole +asswhore +asswipe +asswipes +auto erotic +autoerotic +ayir +azazel +azz +azzhole +b00b +b00bies +b00biez +b00bs +b00bz +b17ch +b1tch +b7ch +babeland +babes +baby batter +baby gravy +baby juice +backdoorman +badfuck +ballbag +ball batter +ballcuzi +ball gag +ball-gag +ballgag +ball gravy +ball kicking +ball-kicking +balllicker +ball licking +ball-licking +ball sack +ballsack +ball sucking +ball-sucking +bampot +bangbro +bang bros +bangbros +bang bus +bangbus +bareback +barely legal +barelylegal +barenaked +barface +barfface +bassterd +bassterds +b a s t a r d +bastard +bastardo +bastards +bastardz +basterds +basterdz +bastinado +batty boi +battyboi +batty boy +battyboy +bazongas +bazooms +bbw +b!+ch +bdsm +beaner +beaners +beaney +beaneys +bean flicker +bean-flicker +beanflicker +bean queen +beardedclam +beastality +beastial +beastiality +beastility +beatch +beatoff +beatyourmeat +beaver cleaver +beaver lips +beef curtains +beestiality +beeyotch +bellend +bellesa +beotch +bestial +bestiality +bi7ch +biatch +bi+ch +bicon +bi curious +bicurious +bigass +bigbastard +big black +big boobs +big breasts +bigbreasts +bigbutt +big cock +big knockers +big tits +bigtits +bimbo +bimbos +bint +birdlock +b i t c h +bitch +bitchass +bitched +bitcher +bitchers +bitches +bitchez +bitchin +bitching +bitchslap +bitchtit +bitchy +biteme +bitties +black cock +blackcock +blackman +blacks +blonde action +blonde on blonde +blonde on blonde action +bloodclaat +bloody +blow j +blow job +blow-job +blowjob +blowjobs +blow your l +blow your load +bluegum +bluegums +blue waffle +bluewaffle +blumpkin +boang +boche +boches +boffing +bogan +bohunk +boink +boiolas +bollick +bollock +bollocks +bollok +bollox +bombers +bomd +bondage +boned +boner +boners +bone smuggler +bone-smuggler +bonesmuggler +bong +bonze +b o o b +bo ob +boob +bo obs +boobs +boong +boonga +boongas +boongs +boonie +boonies +booobs +boooobs +booooobs +booooooobs +bootee +bootlip +bootlips +booty buffer +booty-buffer +booty call +boozer +bosch +bosche +bosches +boschs +bosomy +boston george +bounty bar +bountybar +bounty bars +bratze +brea5t +breastjob +breastlover +breastman +breasts +brownie king +brownie queen +brown piper +brown-piper +brownpiper +brown shower +brown showers +brunette action +b!tch +b*tch +btch +b!tchin +buceta +buddha head +buddha-head +buddhahead +buddhaheads +buffies +bufter +bufty +bugger +buggered +buggery +bukake +bukkake +bullcrap +bulldike +bulldyke +bullet vibe +bullet vibrator +bull shit +bull-shit +bullshit +bullshits +bullshitted +bullturds +bumblefuck +bum boy +bum-boy +bumboy +bum chum +bum-chum +bumchum +bum driller +bum-driller +bumdriller +bumfuck +bumhole engineer +bum pilot +bum pirate +bum-pirate +bum rider +bumrider +bum robber +bum-robber +bumrobber +bum rustler +bumsen +bung +bunga +bungas +bung hole +bunghole +bunny fucker +burr head +burrhead +burr heads +burrheads +busty +butchbabes +butchdike +butchdyke +butt +buttbang +butt boy +butt-boy +buttboy +buttcheeks +buttface +buttfuck +buttfucker +buttfuckers +butthead +butthole +butthole engineer +buttman +buttmuch +buttmunch +buttmuncher +butt pilot +butt pirate +butt-pirate +buttpirate +butt plug +buttplug +butt rider +buttrider +butt robber +butt-robber +buttrobber +butt rustler +buttstain +buttwipe +byatch +c-0-c-k +c.0.c.k +c0ck +c0cks +c0cksucker +c0k +cabron +caca +cacker +cahone +camel jockey +cameljockey +camel jockeys +camel jockies +cameljockies +camel toe +cameltoe +camgirl +camslut +camwhore +canadian porch swing +carpet muncher +carpetmuncher +carruth +cawk +cawks +cazzo +chav +cheese eating surrender monkey +cheese-eating surrender monkey +cheeseeating surrender monkey +cheese eating surrender monkies +cheeseeating surrender monkies +cheesehead +cheeseheads +cherrypopper +chi chi man +chi-chi man +chicken queen +chickslick +china man +chinaman +china men +chinamen +china swede +chinaswede +china swedes +chinaswedes +chinc +chincs +chinga +ching chong +ching-chong +chingchong +ching chongs +chingchongs +chink +chinks +chinky +choad +chocolate rosebud +chocolate rosebuds +chode +chodes +cholerophile +cholerophilia +chonkies +chonky +chonkys +chraa +christ +christ killer +christ killers +chug +chugs +chuj +chunger +chungers +chunkies +chunkys +cialis +cipa +circle-jerk +circlejerk +cishet +cissie +cissy +cl1t +clamdigger +clamdiver +clamps +clansman +clansmen +clanswoman +clanswomen +claustrophile +claustrophilia +cleveland accordion +cleveland hot waffle +cleveland steamer +clit +clitface +clitfuck +clitoris +clitorus +clits +clitty +clogwog +clover clamp +clover clamps +clunge +cluster fuck +cluster-fuck +clusterfuck +cnts +cntz +cnut +cocain +cocaine +c-o-c-k +c.o.c.k. +cock +cockbite +cockblock +cockblocker +cockburger +cockcowboy +cockface +cockfight +cockfucker +cock-head +cockhead +cockholster +cockjockey +cockknob +cockknocker +cockknoker +cocklicker +cocklover +cockmaster +cockmongler +cockmongruel +cockmonkey +cockmunch +cockmuncher +cocknob +cocknose +cocknugget +cockpipe cosmonaut +cockqueen +cockrider +cocks +cockshit +cocksman +cocksmith +cocksmoker +cockstruction worker +cocksucer +cocksuck +cocksucked +cock-sucker +cocksucker +cocksucking +cocksucks +cocksuka +cocksukka +cocktease +cocky +cohee +coimetrophile +coimetrophilia +coital +coitus +cok +cokmuncher +coksucka +collared +collaring +condom +coochie +coochy +coolie +coolies +cooly +coon +coon ass +coonass +coon asses +coonasses +coondog +coons +cooter +coprolagnia +coprophile +coprophilia +copulate +corksucker +cornhole +cra5h +crackcocain +crackpipe +crackwhore +crafty butcher +crap +crapola +crapper +crappy +cream-pie +creampie +crotchjockey +crotchmonkey +crotchrot +cuck +cum +cumbubble +cumdumpster +cum face +cumfest +cumguzzler +cuming +cumjockey +cum licker +cumlickr +cumm +cummer +cummin +cumming +cumquat +cumqueen +cums +cum shot +cumshot +cum shots +cumshots +cumslut +cumstain +cumsucker +cumtart +cunilingus +cunillingus +cunn +cunnie +cunnilingus +cunntt +cunny +c u n t +c-u-n-t +c.u.n.t +cunt +cunt boy +cunt-boy +cuntboy +cunteyed +cuntface +cuntfuck +cuntfucker +cunthole +cunthunter +cuntlick +cuntlicker +cuntlicking +cuntrag +cunts +cuntslut +cuntsucker +cuntz +curry muncher +curry-muncher +currymuncher +curry munchers +currymunchers +cushi +cushis +cyalis +cyberfuc +cyberfuck +cyberfucked +cyberfucker +cyberfuckers +cyberfucking +cybersex +cyberslimer +d0ng +d0uch3 +d0uche +d1ck +d1ld0 +d1ldo +d4mn +dago +dagos +dahmer +damm +dammit +damn +damnit +darkey +darkeys +darkie +darkies +darky +date rape +daterape +datnigga +dawgie style +dawgie-style +daygo +ddlg +deapthroat +deepaction +deep throat +deep-throat +deepthroat +deep throating +deepthroating +defecate +deggo +dego +degos +dendrophile +dendrophilia +destroyyourpussy +deth +diaper daddy +diaperdaddy +diaper head +diaperhead +diaper heads +diaperheads +dick +dickbag +dickbeater +dickbeaters +dickbrain +dickdipper +dickface +dickflipper +dickforbrains +dickfuck +dick girl +dick-girl +dickgirl +dickhead +dickheads +dickhole +dick-ish +dickish +dickjuice +dickless +dicklick +dicklicker +dickman +dickmilk +dickmonger +dick pic +dickpic +dickripper +dicks +dicksipper +dickslap +dickslicker +dicksucker +dickwad +dickweasel +dickweed +dickwhipper +dickwod +dickzipper +diddle +dike +dild0 +dild0s +dildo +dildos +dilf +diligaf +dilld0 +dilld0s +dillweed +dimwit +dingle +dingleberries +dingleberry +dink +dinks +dipsea +dipship +dipshit +dipstick +dirsa +dirty pillows +dirty sanchez +dishabiliophile +dishabiliophilia +dix +dixiedike +dixiedyke +dlck +dödel +dog-fucker +doggie +doggie style +doggie-style +doggiestyle +doggin +dogging +doggy style +doggy-style +doggystyle +dog shit +dog-shit +dogshit +dog style +dolcett +domination +dominatricks +dominatrics +dominatrix +domme +dommes +dong +donkey punch +donkeypunch +donkeyribber +donut muncher +donut puncher +doochbag +doodoo +doofus +dookie +doon coon +dooncoon +doosh +dot head +dothead +dot heads +dotheads +double dong +doubledong +double penetration +doublepenetration +douch3 +douche +douche bag +douchebag +douchebags +douche-fag +douchewaffle +douchey +dp action +dpaction +dragqueen +dragqween +dripdick +dry hump +dryhump +duche +dudette +dumass +dumb ass +dumbass +dumbasses +dumbbitch +dumbfuck +dumbshit +dumshit +dune coon +dune-coon +dune coons +dupa +dutch rudder +dvda +dyefly +dyke +dykes +dystychiphile +dystychiphilia +dziwka +earotics +easyslut +eatadick +eatballs +eathairpie +eatme +eat my +eat my ass +eatmyass +eatpussy +ecchi +edge play +edgeplay +ejackulate +ejaculate +ejaculated +ejaculating +ejaculation +ejakulate +ekrem +ekto +electro-play +electroplay +emetophile +emetophilia +enby +enculer +enema +erection +ero +erotic +erotism +escort +eskimo trebuchet +esqua +essohbee +ethical slut +eunuch +evl +excrement +exkwew +extacy +extasy +eye-tie +eyetie +f4nny +facefucker +fack +faeces +faen +fag +fag1t +fagbag +fag bomb +fag-bomb +fagbomb +faget +fagfucker +fagg +fagg1t +fagged +fagging +faggit +faggitt +faggot +faggotcock +faggs +fagit +fagot +fagots +fags +fagt +fagtard +fagz +faig +faigs +faigt +fanculo +fannybandit +fannyflaps +fannyfucker +fanyy +fartknocker +fastfuck +fatah +fatfuck +fatfucker +fatso +f*ck +fck +fckcum +fckd +fcuk +fcuker +fcuking +fecal +feck +fecker +feg +felatio +felch +felcher +felching +fellate +fellating +fellatio +feltch +feltcher +feltching +femalesquirtin +female squirting +femalesquirting +femdom +fetish +fick +ficken +figging +finger bang +fingerbang +fingerbanging +fingered +fingerfood +fingerfuck +fingerfucked +fingerfucker +fingerfuckers +fingerfucking +fingerfucks +fingering +finocchio +finoccio +finochio +fisted +fister +fistfuck +fistfucked +fistfucker +fistfuckers +fistfucking +fistfuckings +fistfucks +fisting +fisty +fitt +flamer +flasher +flikker +flipping the bird +flittchen +flogthelog +floo +floozy +flydie +flydye +foad +fok +fondle +foobar +fook +fooker +footaction +foot fetish +footfetish +footfuck +footfucker +foot job +foot-job +footjob +footlicker +footstar +foreskin +forni +fornicate +fotze +foursome +fourtwenty +fratze +freakfuck +freakyfucker +freefuck +freex +french rudder +frigg +frigga +frigger +frog eater +frog-eater +frogeater +frolic me +frolicme +frottage +frotting +fucck +f u c k +f-u-c-k +f.u.c.k +f_u_c_k +fuck +fucka +fuckable +fuckass +fuckbag +fuckbitch +fuckbook +fuckboy +fuckbrain +fuckbuddy +fuckbutt +fuck buttons +fuckd +f u c k e +fucked +fuckedup +fucken +f u c k e r +fucker +fuckers +fuckersucker +fuckface +fuckfest +fuckfreak +fuckfriend +fuckhead +fuckheads +fuckher +fuckhole +fuckin +fuckina +fucking +fuckingbitch +fuckings +fuckingshitmotherfucker +fuckinnuts +fuckinright +fuckit +fuckknob +fuckme +fuckmeat +fuckmehard +fuckmonkey +fuckn +fucknugget +fucknut +fucknuts +fucknutt +fucknutz +fuckoff +fuckpig +fuckpuppet +fuckr +fucks +fuckstick +fuck-tard +fucktard +fucktards +fucktoy +fucktrophy +fuckup +fuckwad +fuckwads +fuckwhit +fuckwhore +fuck-wit +fuckwit +fuckwits +fuckwitt +fuckyomama +fuckyou +fudge packer +fudge-packer +fudgepacker +fugly +f u k +fuk +fukah +fuken +fuker +fukin +fuking +fukk +fukkah +fukken +fukker +fukkin +fukking +fuks +fuktard +fuktards +fukwhit +fukwit +funfuck +futanari +futanary +futkretzn +fuuck +fux +fux0r +fuxor +fvck +fvk +fxck +g00k +gae +gai +gang bang +gangbang +gangbanged +gangbanger +gangbangs +ganja +gassyass +gator bait +gatorbait +gayass +gaybob +gayboy +gaydo +gaygirl +gaylord +gaymuthafuckinwhore +gays +gay sex +gaysex +gaysian +gaytard +gaywad +gayz +geezer +geni +genital +genitals +genitorture +gerontophile +gerontophilia +getiton +gey +gfy +ghay +ghey +giant cock +gigolo +gin jockey +gin jocky +ginzo +ginzos +gipp +gippo +gippos +gipps +girl on +girl on top +girls gone wild +givehead +glans +glazeddonut +goatcx +goatse +godam +godammit +godamn +godamnit +god-dam +goddam +goddamit +goddamm +god dammit +goddammit +god damn +god-damn +goddamn +god damned +god-damned +goddamned +goddamnes +god damnit +goddamnit +goddamnmuthafucker +godsdamn +gokkun +go-kun +golden shower +goldenshower +golden showers +golliwog +golliwogs +gollywog +gonad +gonads +gonorrehea +gonzagas +gooch +goodpoop +goo girl +gook +gook eye +gook-eye +gookeye +gook eyes +gookeyes +gookie +gookies +gooks +gooky +gora +goras +goregasm +gotohell +goy +goyim +gray queen +greaseball +greaseballs +grey queen +groe +groid +groids +grope +grostulation +group sex +g-spot +gspot +gstring +gtfo +gub +gubba +gubbas +gubs +guido +guiena +guineas +guizi +gummer +guro +gwailo +gwailos +gweilo +gweilos +gym bunny +gymbunny +gyopo +gyopos +gyp +gyped +gypo +gypos +gypp +gypped +gyppie +gyppies +gyppo +gyppos +gyppy +gyppys +gypsys +h00r +h0ar +h0m0 +h0mo +h0r +h0re +h4x0r +hackfresse +hadji +hadjis +hairyback +hairybacks +haji +hajis +hajji +hajjis +half breed +halfbreed +half caste +halfcaste +hamas +hamflap +hand job +hand-job +handjob +haole +haoles +hapa +hard core +hardcore +hardcoresex +hardon +he11 +headfuck +hebe +hebes +heeb +heebs +heimie +h e l l +hell +hells +helvete +hentai +hermie +heroin +herp +herpes +herpy +heshe +hickory switch +hijacking +hillbillies +hillbilly +hindoo +hippophile +hippophilia +hiscock +hitler +hitlerism +hitlerist +hoare +hobag +hodgie +hoer +hoes +holestuffer +h o m +hom0 +homo +homobangers +homodumbshit +homoerotic +homoey +honger +honkers +honkey +honkeys +honkie +honkies +honky +hooch +hooker +hookers +hoor +hoore +hootch +hooter +hooters +hore +hori +horis +hork +horndawg +horndog +horney +horniest +horny +horse shit +horse-shit +horseshit +hosejob +hoser +hot carl +hotcarl +hot chick +hotdamn +hotpussy +hot richard +hotsex +hottotrot +how to kill +howtokill +howtomurdep +how to murder +huevon +huge cock +huge fat +hugefat +hui +hummer +humped +humper +humpher +humphim +humpin +humping +hure +hurensohn +hussy +hustler +hymen +hymie +hymies +iblowu +ike +ikes +ikey +ikeymo +ikeymos +ikwe +illegals +impact play +impact-play +incest +indon +indons +injun +injuns +insest +intercourse +intheass +inthebuff +ische +israels +j3rk0ff +jackass +jackhole +jack off +jack-off +jackoff +jackshit +jacktheripper +jail bait +jailbait +jap +japcrap +japie +japies +japs +jebus +jelly donut +jerk0ff +jerked +jerk mate +jerkmate +jerk off +jerk-off +jerkoff +jerries +jerry +jesus +jesus christ +jewboy +jewed +jewess +jiga +jigaboo +jigaboos +jigarooni +jigaroonis +jigg +jigga +jiggabo +jiggaboo +jiggabos +jiggas +jigger +jiggerboo +jiggers +jiggs +jiggy +jigs +jihad +jijjiboo +jijjiboos +jimfish +jisim +jism +jiss +jiz +jizim +jizin +jizjuice +jizm +jizn +jizz +jizzd +jizzed +jizzim +jizzin +jizzn +jizzum +jugg +juggs +jungle bunnies +jungle bunny +junglebunny +junkie +junky +kacap +kacapas +kacaps +kackbratze +kacke +kacken +kackwurst +kaffer +kaffir +kaffre +kafir +kampflesbe +kanake +kanker +katsap +katsaps +kawk +kennebunkport surprise +kentucky klondike +kentucky tractor puller +khokhol +khokhols +kigger +kike +kikes +kimchis +kimme +kinbaku +kink +kinkster +kinky +kinkyJesus +kissass +kitty puncher +kitty-puncher +kittypuncher +kiunt +kkk +klan +klansman +klansmen +klanswoman +klanswomen +klootzak +knobbing +knobead +knobed +knobend +knobhead +knobjocky +knobjokey +knobz +knockers +knulle +kock +kondum +kondums +kooch +kooches +koon +kootch +krap +krappy +kraut +krauts +kuffar +kuk +kuksuger +kum +kumbubble +kumbullbe +kumer +kummer +kumming +kums +kunilingus +kunnilingus +kunt +kunts +kuntz +kurac +kurwa +kushi +kushis +kusi +kwa +kwai lo +kwai los +kwif +kyke +kykes +kynophile +kynophilia +kyopo +kyopos +kyrpa +l3i+ch +l3i\+ch +l3itch +labia +lady boy +lady-boy +ladyboy +lapdance +leather restraint +leatherrestraint +leather straight +leather straight jacket +lebos +lech +lemon party +lemonparty +leningrad steamer +leper +lesbain +lesbayn +lesbin +lesbo +lesbos +leso +lez +lezbe +lezbefriends +lezbian +lezbians +lezbo +lezbos +lezz +lezzian +lezzie +lezzies +lezzo +lezzy +libido +licker +licking +lickme +light in the fedora +light in the loafers +light in the pants +lilniglet +limey +limpdick +limp wristed +limp-wristed +limy +lingerie +lipshits +lipshitz +literotica +livesex +loadedgun +lolita +lovebone +lovegoo +lovegun +lovejuice +lovemaking +lovemuscle +lovepistol +loverocket +lowlife +lsd +lubejob +lubra +lucifer +luckycammeltoe +lugan +lugans +lümmel +lusting +lusty +lynch +m0f0 +m0fo +m45terbate +ma5terb8 +ma5terbate +mabuno +mabunos +macaca +macacas +mafugly +magicwand +mahbuno +mahbunos +make me come +makemecome +makemecum +male squirting +male-squirting +mamhoon +mams +manhater +manpaste +maricon +maricón +marijuana +masochist +masokist +massa +massive cock +massterbait +masstrbait +masstrbate +mastabate +mastabater +masterb8 +masterbaiter +masterbat +masterbat3 +master-bate +masterbate +masterbates +masterbating +masterbation +masterbations +masterblaster +mastrabator +masturb8 +masturbat +masturbate +masturbating +masturbation +mattressprincess +mau mau +maumau +mau maus +maumaus +mayonnaise monkey +mayonnaise monkies +mcfagget +mdlb +meatbeatter +meat masseuse +meatrack +meat spin +meatspin +menage +menage a trois +menage-a-trois +menages a trois +menages-a-trois +menophile +menophilia +merd +mexican pancake +m-fucking +mgger +mggor +mibun +mick +mickeyfinn +mideast +mierda +milf +MILF +milwaukee blizzard +mindfuck +minge +minger +missionary position +mississippi birdbath +mockey +mockie +mocky +mof0 +mo-fo +mofo +moky +molest +molestation +molester +molestor +moneyshot +mong +monkleigh +moolie +moon cricket +mooncricket +moon crickets +mooncrickets +möpse +morgenlatte +moron +möse +moskal +moskals +moslem +mosshead +mothafuck +mothafucka +mothafuckas +mothafuckaz +mothafucked +motha fucker +mothafucker +mothafuckers +mothafuckin +mothafucking +mothafuckings +mothafucks +motha fuker +motha fukkah +motha fukker +motherfuck +motherfucka +motherfucked +mother fucker +mother-fucker +motherfucker +motherfuckers +motherfuckin +motherfucking +motherfuckings +motherfuckka +motherfucks +mother fukah +mother fuker +mother fukkah +mother fukker +motherfvcker +motherlovebone +mothrfucker +mouliewop +mound of venus +moundofvenus +mr hands +mr. hands +mrhands +mtherfucker +mthrfuck +mthrfucker +mthrfucking +mtrfck +mtrfuck +mtrfucker +muff +muffdive +muff diver +muff-diver +muffdiver +muff diving +muffdiving +muffindiver +mufflikcer +muffpuff +mufti +muie +mulatto +mulkku +muncher +munging +munt +munter +muschi +muscle mary +muthafecker +muthafuckaz +mutha fucker +muthafucker +muthafuckker +mutha fukah +mutha fuker +mutha fukkah +mutha fukker +muther +mutherfucker +mutherfucking +muthrfucking +mvtube +mzungu +mzungus +n1gga +n1gger +n1gr +nackt +nads +naked +nambla +nastt +nastybitch +nastyho +nastyslut +nastywhore +nawashi +nazi +nazis +nazism +necro +necrophile +necrophilia +needthedick +neger +negres +negress +negro +negroes +negroid +negros +neo nazi +neo-nazi +neonazi +nepesaurio +nig +niga +nigar +nigars +nigas +nigerian hurricane +nigers +nigette +nigettes +nigg +nigg3r +nigg4h +nigga +niggah +niggahs +niggar +niggaracci +niggard +niggarded +niggarding +niggardliness +niggardlinesss +niggardly +niggards +niggars +niggas +niggaz +nigger +niggerhead +niggerhole +niggers +niggle +niggled +niggles +nigglings +niggor +niggress +niggresses +niggs +nigguh +nigguhs +niggur +niggurs +niglet +nig nog +nignog +nigor +nigors +nigr +nigra +nigras +nigre +nigres +nigress +nigs +nigur +niiger +niigr +nimpho +nimphomania +nimphomaniac +nimrod +ninny +nippel +nipple +nipple clamp +nipple clamps +nipplering +nipples +nips +nittit +nlgger +nlggor +nob +nobhead +nobjocky +nob jokey +nobjokey +nofuckingway +nog +nookey +nookie +nooky +noonan +nooner +nsfw +nsfw images +nude +nudger +nudie +nudies +nudity +numbnuts +nutbutter +nutfucker +nut sack +nutsack +nutte +nutten +nympho +nymphomania +nymphomaniac +o c k +octopussy +oklahomo +omorashi +onanieren +one cup two girls +one guy +one guy one jar +one jar +one jar one man +one man one jar +only fans +onlyfans +ontherag +orafis +orga +orgasim +orgasim; +orgasims +orgasm +orgasmic +orgasms +orgasmus +orgasum +orgies +orgy +oriface +orifiss +orospu +osama +ovum +ovums +p0rn +packi +packie +packy +paddy +paedo bear +paedobear +paedophile +paedophilia +pain slut +painslut +paki +pakie +pakis +paky +palesimian +panamanian petting zoo +pancake face +pancake faces +panooch +pansies +pansy +panti +pantie +panties +panty +parthenophile +parthenophilia +paska +payo +pcp +pearlnecklace +pecker +peckerhead +peckerwood +pedo +pedo bear +pedobear +pedophile +pedophilia +pedophiliac +peeenus +peeenusss +peehole +peenus +peepee +peepshow +peepshpw +pegging +peinus +pen1s +penas +pendejo +pendy +penetrate +penetration +peni5 +penial +penile +p e n i s +penis +penis-breath +penises +penisfucker +penisland +penislick +penislicker +penispuffer +penthouse +penus +penuus +perse +perv +perversion +peter puffer +peter-puffer +peterpuffer +petrol sniffer +petrol-sniffer +petrolsniffer +peyote +phagophile +phagophilia +phalli +phallic +phone sex +phonesex +phuc +phuck +phuk +phuked +phuker +phuking +phukked +phukker +phukking +phuks +phungky +phuq +pi55 +picaninny +piccaninny +picka +pickaninnies +pickaninny +piece of shit +pieceofshit +pieces of shit +piefke +piefkes +pierdol +pigfucker +piker +pikey +pikeys +piky +pillowbiter +pillu +pimmel +pimp +pimped +pimper +pimpern +pimpis +pimpjuic +pimpjuice +pimpsimp +pindick +pinkeln +pinko +p i s +pis +pises +pisin +pising +pisof +piss +pissed +pissed off +pissen +pisser +pissers +pisses +pissflap +pissflaps +pisshead +pissin +pissing +piss off +piss-off +pissoff +piss pig +pisspig +pizda +playboy +playgirl +pleasure chest +pleasurechest +pnigerophile +pnigerophilia +pnigophile +pnigophilia +pocha +pochas +pocho +pochos +pocketpool +pohm +pohms +poinephile +poinephilia +polac +polack +polacks +polak +pole smoker +polesmoker +pollock +pollocks +pommie grant +pommie grants +pommy +pony boy +pony-boy +ponyboy +pony girl +pony-girl +ponygirl +pony-play +ponyplay +poof +poon +poonani +poonany +poontang +poontsee +poop chute +poopchute +pooper +pooperscooper +pooping +poorwhitetrash +popel +popimp +poppen +porch monkey +porchmonkey +porch monkies +porn +pornflick +porn hub +pornhub +pornking +porno +pornographic +pornography +pornos +pornprincess +potato queen +pound town +poundtown +pplicker +pr0n +pr1c +pr1ck +pr1k +prairie nigger +prairie niggers +preteen +pric +prickhead +pricks +prig +prince albert piercing +proctophile +proctophilia +pron +prostitute +pthc +pu55i +pu55y +pube +pubes +pubic +pubiclice +pubis +pudboy +pudd +puddboy +pula +punani +punanny +punany +punkass +punky +punta +puntang +purinapricness +pusies +puss +pusse +pussee +pussi +pussie +pussies +p u s s y +p.u.s.s.y. +pussy +pussycat +pussydestroyer +pussyeater +pussyfart +pussyfuck +pussyfucker +pussylicker +pussylicking +pussylips +pussylover +pussypalace +pussypounder +pussy puncher +pussy-puncher +pussypuncher +pussys +pusy +puta +puto +puuke +puuker +qahbeh +quashie +queaf +queef +queerhole +queero +queers +queerz +quickie +quicky +quiff +quim +qweers +qweerz +qweir +r5e +ra8s +rag head +raghead +rag heads +ragheads +raging boner +ramen yarmulke +rape +raped +raper +raping +rapist +rautenberg +rearend +rearentry +recktum +rectal +rectum +rectus +redleg +redlegs +redlight +redskin +redskins +reefer +reestie +reetard +reich +renob +rentafuck +rere +retard +retarded +retards +retardz +reudig +reverse cowgirl +reversecowgirl +rhabdophile +rhabdophilia +rhypophile +rhypophilia +rice queen +rimjaw +rimjob +rimming +ring raider +ringraider +ritard +rosebuds +rosette +rosy palm +rosypalm +rosy palm and her 5 sisters +rosypalmandher5sisters +rosypalmandherefivesisters +roundeye +round eyes +r-tard +rtard +r-tards +rtards +rumprammer +ruski +russki +russkie +rusty trombone +rustytrombone +s0b +sadis +sadism +sadist +sadom +sambo +sambos +samckdaddy +sanchez +sandm +sand nigger +sand-nigger +sandnigger +sand niggers +santorum +sausagequeen +scag +scallywag +scank +scantily +scat +scatophile +scatophilia +schabracke +schaffer +scheiss +scheiße +scheisser +schiesser +schizo +schlampe +schlong +schmuck +schnackeln +schvartse +schvartsen +schwanzlutscher +schwartze +schwartzen +schwuchtel +scissoring +screwyou +scroat +scrog +scrote +scrotum +scrud +seduce +semen +seplophile +seplophilia +seppo +seppos +septics +sex +sexcam +sexed +sexfarm +sexhound +sexhouse +sexi +sexing +sexkitten +sexo +sexpot +sexslave +sextogo +sextoy +sextoys +sexual +sexuality +sexually +sexwhore +sexx +sexxi +sexxx +sexxxi +sexxxy +sexxy +sexy +sexymoma +sexyslim +sh!+ +s-h-1-t +sh1t +sh1ter +sh1ts +sh1tter +sh1tz +shag +shagger +shaggin +shagging +shamedame +sharmuta +sharmute +shat +shav +shaved beaver +shavedbeaver +shaved pussy +shavedpussy +shawtypimp +sheeney +sheep shagger +sheepshagger +she male +she-male +shemale +shhit +shi+ +shibari +shibary +shinola +shipal +s h i t +s hit +s-h-i-t +s.h.i.t. +s_h_i_t +shit +shit ass +shit-ass +shitass +shit-bag +shitbag +shit-bagger +shitbagger +shitblimp +shit-brain +shitbrain +shit-breath +shitbreath +shitcan +shit-cunt +shitcunt +shit-dick +shitdick +shite +shiteater +shit-eating +shiteating +shited +shitey +shit-face +shitface +shit-faced +shitfaced +shit-fit +shitfit +shitforbrains +shitfuck +shitfucker +shitfull +shithapens +shithappens +shit head +shit-head +shithead +shit-heel +shitheel +shit-hole +shithole +shit-house +shithouse +shiting +shitings +shitlist +shit-load +shitload +shitola +shitoutofluck +shit-pot +shitpot +shits +shit-spitter +shitspitter +shit-stain +shitstain +shitt +shitted +shitter +shitters +shittiest +shitting +shittings +shitty +shity +shitz +shiz +shiznit +shlong +shortfuck +shota +shrimping +sh!t +shylock +shylocks +shyt +shyte +shytty +shyty +simp +sissy +sixsixsix +sixtynine +sixtyniner +skag +skanck +skank +skankbitch +skankee +skankey +skankfuck +skanks +skankwhore +skanky +skankybitch +skankywhore +skeet +skinflute +skittle harvest +skittles harvest +skribz +skullfuck +skum +skumbag +skurwysyn +skwa +skwe +slag +slant eye +slant-eye +slanteye +slanty +slapper +sleezeball +slideitin +slimeball +slimebucket +slopehead +slopeheads +sloper +slopers +slopey +slopeys +slopies +slopy +slut +slutbag +slutbucket +slutdumper +slutkiss +sluts +slutt +slutting +slutty +slutwear +slutwhore +slutz +s&m +smackthemonkey +smeg +smegma +smut +smutty +snatch +snatchpatch +sniggered +sniggering +sniggers +snowback +snowballing +snownigger +snuff +s-o-b +s.o.b. +socksucker +sodding +sod off +sodom +sodomise +sodomist +sodomite +sodomize +sodomy +son of a bitch +son-of-a-bitch +sonofabitch +son of a whore +son-of-a-whore +sonofbitch +sooties +souse +soused +soyboy +spac +spaghettibender +spaghettinigger +spank +spankthemonkey +spastic +spearchucker +spearchuckers +sperm +spermacide +spermbag +spermhearder +spermherder +sphencter +spic +spick +spicks +spics +spicy gringo +spierdalaj +spig +spigotty +spik +spiks +splittail +splooge +splooge moose +spludge +spooge +spreadeagle +spread legs +spunk +spunky +sqeh +squa +squarehead +squareheads +squaw +squinty +squirting +stagg +stfu +stiffy +stoned +stoner +strap on +strap-on +strapon +strappado +strip club +stripclub +stroking +stuinties +stupidfuck +stupidfucker +style doggy +suastika +suck +suckdick +sucked +sucker +sucking +suckme +suckmyass +suckmydick +suckmytit +suckoff +sucks +suicide girl +suicidegirl +suicide girls +suicidegirls +suka +sultrywoman +sultry women +sultrywomen +sumofabiatch +svastika +swallower +swalow +swamp guinea +swamp-guinea +swamp guineas +swastika +swinger +switch hitter +syphilis +t1t +t1tt1e5 +t1tties +tacohead +tacoheads +taff +tainted love +take off your +taphephile +taphephilia +tar babies +tar baby +tarbaby +tard +taste my +tastemy +tawdry +tea bagged +tea-bagged +tea bagging +tea-bagging +teabagging +teat +teets +teez +terd +teste +testee +testes +testical +testicle +testicles +testis +t-girl +tgirl +thanatophile +thanatophilia +thicklip +thicklips +thirdeye +thirdleg +threesome +threeway +throating +throbbing boner +throbbing cock +thumbzilla +thundercunt +tied up +tight white +tig ol bitties +tig old bitties +timber nigger +timber-nigger +timbernigger +timber niggers +t i t +tit +titbitnipply +titfuck +titfucker +titfuckin +titi +titjob +titlicker +titlover +t i ts +tits +titt +tittchen +titten +tittie +tittie5 +tittiefucker +titties +tittis +titty +tittyfuck +tittyfucker +tittys +tittywank +titwank +tity +to murder +tongethruster +tongue in a +tongueina +tonguethrust +tonguetramp +toots +topless +tortur +torture +tosser +towel head +towel-head +towelhead +towel heads +trailertrash +trannie +tranny +transbian +transsexual +transvestite +traumatophile +traumatophilia +tribadism +tribbing +trisexual +trois +trots +tub girl +tubgirl +tuckahoe +tunneloflove +turd burgler +turnon +tush +tushy +tw4t +twat +twathead +twatlips +twats +twatty +twatwaffle +twink +twinkie +twobitwhore +two girls one cup +twunt +twunter +udge packer +ukrop +unclefucker +undressing +unfuckable +upskirt +uptheass +upthebutt +urethra play +urethraplay +urophile +urophilia +usama +ussys +uzi +v14gra +v1gra +v4gra +va1jina +vag +vag1na +vagiina +v a g i n a +vagina +vaj1na +vajina +va-j-j +valium +venus mound +vgra +viagra +vibr +vibrater +vibrator +vigra +violet wand +virginbreaker +vittu +vixen +vjayjay +vögeln +vollpfosten +vorarephile +vorarephilia +voyeur +voyeurweb +voyuer +vullva +vulva +w00se +w0p +wab +wagon burner +wagon-burner +wang +wank +wanker +wanking +wanky +wax play +wax-play +waysted +wazoo +weenie +weewee +weiner +welcher +wench +wetb +wet back +wet-back +wetback +wetbacks +wet dream +wetdream +wetspot +wh00r +wh0re +wh0reface +whacker +whash +whigger +whiggers +whiskeydick +whiskydick +whit +whitenigger +white power +white-power +whitepower +white trash +whitetrash +whitey +whiteys +whities +whoar +whop +whoralicious +whore +whorealicious +whorebag +whored +whoreface +whorefucker +whorehopper +whorehouse +whores +whoring +wichse +wichsen +wichser +wigga +wiggas +wigger +wiggers +wiitwd +willie +willies +williewanker +willy +wog +wogs +wolfbagging +woose +wop +worldsex +wrapping men +wrinkled starfish +wtf +wuss +wuzzie +xhamster +xkwe +xnxx +x-rated +xrated +x-rated2g1c +xtc +xtube +xvideos +xx +xxx +xxxxxx +xyrophile +xyrophilia +yank +yaoi +yarpie +yarpies +yed +yellowman +yellow shower +yellow showers +yellowshowers +yid +yids +yiffy +yobbo +yourboobs +yourpenis +yourtits +yury +zabourah +zigabo +zigabos +zipper head +zipper-head +zipperhead +zipperheads +zippo cat +zippo-cat +zippocat +zoophile +zoophilia +zoophilia​🖕​🤬​ diff --git a/src/game.rs b/src/game.rs index 9baa9fa..a911f68 100644 --- a/src/game.rs +++ b/src/game.rs @@ -135,6 +135,7 @@ async fn set_name( Ok(()) => messages.info("set-name-succ"), Err(NameUpdateError::TooShort(expected, actual)) => messages.info(format!("err|That's too little!|We need more information about you. Give us at least {expected} characters for you new name!|Received characters: {actual}")), Err(NameUpdateError::TooLong(expected, actual)) => messages.info(format!("err|That's too much!|We only live in (20)25, so please use less than {expected} characters for your new name.|Received characters: {actual}")), + Err(NameUpdateError::ContainsBadWord) => messages.info(format!("err|Hmmm. I don't like this name.|Please choose a different one!|")), }; // Redirect back to the game page diff --git a/src/main.rs b/src/main.rs index 4401b3a..a6e4afa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,12 @@ use axum::{http::HeaderMap, routing::get, Router}; use axum_extra::extract::{cookie::Cookie, CookieJar}; use axum_messages::MessagesManagerLayer; use sqlx::{pool::PoolOptions, sqlite::SqliteConnectOptions, SqlitePool}; -use std::{fmt::Display, str::FromStr, sync::Arc}; +use std::{ + collections::HashSet, + fmt::Display, + str::FromStr, + sync::{Arc, LazyLock}, +}; use tower_http::services::ServeDir; use tower_sessions::{MemoryStore, SessionManagerLayer}; use uuid::Uuid; @@ -73,6 +78,36 @@ struct Req { pub(crate) enum NameUpdateError { TooLong(usize, usize), TooShort(usize, usize), + ContainsBadWord, +} + +static BAD_WORDS: LazyLock> = LazyLock::new(|| { + const BAD_WORDS_FILE: &str = include_str!("../bad/merged_output.txt"); + + BAD_WORDS_FILE + .lines() + .map(|line| line.trim()) + .filter(|line| !line.is_empty() && !line.starts_with('#')) // Skip empty lines and comments + .map(|word| { + word.to_lowercase() + .chars() + .filter(|c| c.is_alphabetic()) + .collect() + }) + .filter(|word: &String| !word.is_empty()) + .collect() +}); + +fn contains_bad_word(text: &str) -> bool { + let cleaned_text: String = text + .to_lowercase() + .chars() + .filter(|c| c.is_alphabetic()) + .collect(); + + BAD_WORDS + .iter() + .any(|bad_word| cleaned_text.contains(bad_word)) } impl Backend { @@ -105,6 +140,9 @@ impl Backend { if name.len() < 3 { return Err(NameUpdateError::TooShort(3, name.len())); } + if contains_bad_word(&name) { + return Err(NameUpdateError::ContainsBadWord); + } match self { Backend::Sqlite(db) => {