.BANCHO. .FIX. Fix chat filters

This commit is contained in:
Nyo 2016-08-10 12:00:33 +02:00
parent 9ea11c9e0e
commit a5fd8b0431
8 changed files with 62 additions and 62 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
**/__pycache__
config.ini
filters.txt
.data

View File

@ -296,12 +296,15 @@ def systemShutdown(fro, chan, message):
return restartShutdown(False)
def systemReload(fro, chan, message):
#Reload settings from bancho_settings
# Reload settings from bancho_settings
glob.banchoConf.loadSettings()
# Reload channels too
glob.channels.loadChannels()
# And chat filters
glob.chatFilters.loadFilters()
# Send new channels and new bottom icon to everyone
glob.tokens.enqueueAll(serverPackets.mainMenuIcon(glob.banchoConf.config["menuIcon"]))
glob.tokens.enqueueAll(serverPackets.channelInfoEnd())

View File

@ -1,22 +1,16 @@
👍=
👎=
👼=
😈=
😀=
😃=
😆=
😊=
😍=
😎=
😑=
😖=
😗=
😛=
😠=
😡=
😥=
😬=
😭=
😮=
😯=
r/osugame=cancer
fuck=firetruck
shit=shish
ass=peach
asses=peaches
bitch=fine lady
bitches=fine ladies
asshole=donkey
ass hole=donkey
cock=chicken
cocks=chickens
dick=eggplant
dicks=eggplants
boobs=bob
tits=teeth
cum=yogurt
cunt=count

View File

@ -6,9 +6,7 @@ from objects import fokabot
from helpers import discordBotHelper
from helpers import userHelper
from events import logoutEvent
from events import channelJoinEvent
from constants import messageTemplates
from helpers import filterHelper
def joinChannel(userID = 0, channel = "", token = None, toIRC = True):
"""
@ -210,9 +208,8 @@ def sendMessage(fro = "", to = "", message = "", token = None, toIRC = True):
# Truncate message if > 2048 characters
message = message[:2048]+"..." if len(message) > 2048 else message
# check for word filters
filters = filterHelper.chatFilters()
message = filters.checkFilters(message)
# Check for word filters
message = glob.chatFilters.filterMessage(message)
# Build packet bytes
packet = serverPackets.sendMessage(username, toClient, message)

View File

@ -1,31 +0,0 @@
import os
class chatFilters():
oldWords = () # have to use tuples as a
newWords = () # dictionary broke fairly hard.
def loadFilters(self):
filterFile = open(os.path.dirname(os.path.realpath(__file__)) + "/filters.txt", "r")
for line in filterFile:
lineSplit = line.split("=")
#self.filters[lineSplit[0]] = lineSplit[1]
self.oldWords += (lineSplit[0],)
self.newWords += (lineSplit[1].replace("\n", ""),)
def checkFilters(self, message):
if " " in message:
messageTemp = message.split(" ") # split word by spaces
else:
messageTemp = message
for word in messageTemp:
if word in self.oldWords:
oldIdx = self.oldWords.index(word)
message = message.replace(word, self.newWords[oldIdx]) # replace the bad word with our filtered word
return message

35
objects/chatFilters.py Normal file
View File

@ -0,0 +1,35 @@
import os
class chatFilters:
def __init__(self, fileName="filters.txt"):
self.filters = {}
self.loadFilters(fileName)
def loadFilters(self, fileName="filters.txt"):
# Reset chat filters
self.filters = {}
# Open filters.txt
#with open(os.path.dirname(os.path.realpath(__file__)) + "/../"+fileName+".txt", "r") as f:
with open("filters.txt", "r") as f:
# Read all lines
data = f.readlines()
# Process each line
for line in data:
# Get old/new word and save it in dictionary
lineSplit = line.split("=")
self.filters[lineSplit[0]] = lineSplit[1].replace("\n", "")
def filterMessage(self, message):
# Split words by spaces
messageTemp = message.split(" ")
# Check each word
for word in messageTemp:
# If the word is filtered, replace it
if word in self.filters:
message = message.replace(word, self.filters[word])
# Return filtered message
return message

View File

@ -24,6 +24,7 @@ pool = None
fLocks = fileLocks.fileLocks()
verifiedCache = {}
cloudflare = False
chatFilters = None
debug = False
outputRequestTime = False

6
pep.py
View File

@ -19,11 +19,11 @@ from helpers import configHelper
from objects import glob
from objects import fokabot
from objects import banchoConfig
from objects import chatFilters
from helpers import consoleHelper
from helpers import databaseHelperNew
from helpers import generalFunctions
from helpers import logHelper as log
from helpers import filterHelper
from handlers import mainHandler
from handlers import apiIsOnlineHandler
@ -109,12 +109,12 @@ if __name__ == "__main__":
try:
consoleHelper.printNoNl("> Loading chat filters... ")
filters = filterHelper.chatFilters()
filters.loadFilters()
glob.chatFilters = chatFilters.chatFilters()
consoleHelper.printDone()
except:
consoleHelper.printError()
consoleHelper.printColored("[!] Error while loading chat filters. Make sure there is a filters.txt file present", bcolors.RED)
raise
# Create data folder if needed
consoleHelper.printNoNl("> Checking folders... ")