所以我的一个朋友建立了一个CPPS(俱乐部企鹅专用服务器)并用python建立了一个誓言过滤器,但要求我看看它,因为它需要更新。但是,我发现他输入了诸如FAK之类的其他选项,这意味着当您键入FAKE时,它会踢您起誓。如何仅搜索单词,如果它是另一个单词的一部分,则忽略它,还是我需要添加一个备用单词列表以忽略? (请注意,下面的代码是我认为您需要的代码,但是其中一些代码是用于连接数据库或客户端的,因此,请根据需要进行重做,我只需要一行代码来忽略假冒或确保它是仅屏幕上的单词,而不是另一个单词的一部分) 谢谢
到目前为止,我所能做到的最好的就是从他的数据库中完全删除FAK,但这只是让人们疯狂地使用他们所说的话。
@Handlers.Throttle(0.5)
def handleSendMessage(self, data):
if data.Id != self.user.ID:
return self.transport.loseConnection()
badWords = ["fak"]
for badWord in badWords:
badWord = badWord.upper()
if badWord in data.Message.upper():
return self.server.players[self.user.ID].sendErrorAndDisconnect(800)
self.room.sendXt("sm", self.user.ID, data.Message)
我希望代码在其CPPS上启动后,将能够检测到该人说的话实际上是在咒骂,还是他们只是在说带有该词字母的内容。
答案 0 :(得分:0)
import re
pattern = '|'.join(fr'\b{word}\b' for word in badwords)
if re.search(pattern, data.Message.casefold()):
return self.server.players[self.user.ID].sendErrorAndDisconnect(800)