mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-10-31 08:47:54 +00:00
51 lines
1.8 KiB
Python
Executable file
51 lines
1.8 KiB
Python
Executable file
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
|
from otp.ai.MagicWordGlobal import *
|
|
|
|
class ChatAgent(DistributedObjectGlobal):
|
|
|
|
def __init__(self, cr):
|
|
DistributedObjectGlobal.__init__(self, cr)
|
|
self.cr.chatAgent = self
|
|
self.chatMode = 0
|
|
|
|
def delete(self):
|
|
self.ignoreAll()
|
|
self.cr.chatAgent = None
|
|
DistributedObjectGlobal.delete(self)
|
|
|
|
def verifyMessage(self, message):
|
|
try:
|
|
message.decode('ascii')
|
|
return True
|
|
except:
|
|
return False
|
|
|
|
def sendChatMessage(self, message):
|
|
if not self.verifyMessage(message):
|
|
return
|
|
self.sendUpdate('chatMessage', [message, self.chatMode])
|
|
|
|
@magicWord(category=CATEGORY_MODERATOR, types=[int])
|
|
def chatmode(mode=-1):
|
|
""" Set the chat mode of the current avatar. """
|
|
mode2name = {
|
|
0 : "user",
|
|
1 : "moderator",
|
|
2 : "administrator",
|
|
3 : "system administrator",
|
|
}
|
|
if base.cr.chatAgent is None:
|
|
return "No ChatAgent found."
|
|
if mode == -1:
|
|
return "You are currently talking in the %s chat mode." % mode2name.get(base.cr.chatAgent.chatMode, "N/A")
|
|
if not 0 <= mode <= 3:
|
|
return "Invalid chat mode specified."
|
|
if mode == 3 and spellbook.getInvoker().getAdminAccess() < 500:
|
|
return "Chat mode 3 is reserved for system administrators."
|
|
if mode == 2 and spellbook.getInvoker().getAdminAccess() < 400:
|
|
return "Chat mode 2 is reserved for administrators."
|
|
if mode == 1 and spellbook.getInvoker().getAdminAccess() < 200:
|
|
# Like this will ever happen, but whatever.
|
|
return "Chat mode 1 is reserved for moderators."
|
|
base.cr.chatAgent.chatMode = mode
|
|
return "You are now talking in the %s chat mode." % mode2name.get(mode, "N/A")
|