mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-24 04:02:40 -06:00
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
|
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
||
|
from otp.ai.MagicWordGlobal import *
|
||
|
from otp.avatar import Avatar
|
||
|
|
||
|
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")
|