mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-10-31 16:57:54 +00:00
42 lines
1.8 KiB
Python
42 lines
1.8 KiB
Python
|
from direct.directnotify import DirectNotifyGlobal
|
||
|
from direct.distributed.DistributedObjectGlobalUD import DistributedObjectGlobalUD
|
||
|
# TODO: OTP should not depend on Toontown... Hrrm.
|
||
|
from toontown.chat.TTWhiteList import TTWhiteList
|
||
|
|
||
|
class ChatAgentUD(DistributedObjectGlobalUD):
|
||
|
notify = DirectNotifyGlobal.directNotify.newCategory("ChatAgentUD")
|
||
|
|
||
|
def announceGenerate(self):
|
||
|
DistributedObjectGlobalUD.announceGenerate(self)
|
||
|
|
||
|
self.whiteList = TTWhiteList()
|
||
|
|
||
|
def chatMessage(self, message):
|
||
|
sender = self.air.getAvatarIdFromSender()
|
||
|
if sender == 0:
|
||
|
self.air.writeServerEvent('suspicious', self.air.getAccountIdFromSender(),
|
||
|
'Account sent chat without an avatar', message)
|
||
|
return
|
||
|
|
||
|
modifications = []
|
||
|
words = message.split(' ')
|
||
|
offset = 0
|
||
|
WantWhitelist = config.GetBool('want-whitelist', 1)
|
||
|
for word in words:
|
||
|
if word and not self.whiteList.isWord(word) and WantWhitelist:
|
||
|
modifications.append((offset, offset+len(word)-1))
|
||
|
offset += len(word) + 1
|
||
|
|
||
|
cleanMessage = message
|
||
|
for modStart, modStop in modifications:
|
||
|
cleanMessage = cleanMessage[:modStart] + '*'*(modStop-modStart+1) + cleanMessage[modStop+1:]
|
||
|
|
||
|
self.air.writeServerEvent('chat-said', sender, message, cleanMessage)
|
||
|
|
||
|
# TODO: The above is probably a little too ugly for my taste... Maybe AIR
|
||
|
# should be given an API for sending updates for unknown objects?
|
||
|
DistributedAvatar = self.air.dclassesByName['DistributedAvatarUD']
|
||
|
dg = DistributedAvatar.aiFormatUpdate('setTalk', sender, sender,
|
||
|
self.air.ourChannel,
|
||
|
[0, 0, '', cleanMessage, modifications, 0])
|
||
|
self.air.send(dg)
|