Modules de chat côté serveur

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Vous pouvez utiliser les modules de chat suivants pour soutenir les comportements côté serveur du système de chat hérité Legacy chat system y compris :

  • ChatService : Un singleton qui gère tous les autres modules de chat.
  • Orateur de chat : Une entité qui peut créer des messages dans un canal de chat ; chacun Player aura automatiquement un orateur de chat et les bots pourront discuter en créant des orateurs de chat.
  • Message de chat : Un conteneur pour le contenu qu'un orateur de chat envoie à un canal de chat ; contient des métadonnées utilisées pour formater le message ou ajouter une fonctionnalité supplémentaire aux commandes.
  • Canal de chat : Un canal par lequel les orateurs de chat peuvent échanger des messages de chat ; également utilisé pour le chat d'équipe et le chat de chuchotement.

Service de chat

ChatService est un objet singleton qui gère le comportement côté serveur du système de chat Lua, comme ChatChannels et ChatSpeakers.

Tous les ModuleScript dans le dossier ChatModules doivent retourner une fonction, et cette fonction sera appelée avec le singleton ChatService.

Méthodes

Ajouter un canal

  • Paramètres : string : channelName
  • Description : Crée un objet de canal de chat avec le nom donné et le retourne.
  • Retours : Canal de chat

Supprimer le canal

  • Paramètres : string : channelName
  • Description : Supprimer un canal avec le nom donné
  • Retours : void

Obtenir le canal

  • Paramètres : string : channelName
  • Description : Retourne le canal avec le nom donné, ou nil s'il n'existe pas.
  • Retours : Canal de chat

Ajouter un orateur

  • Paramètres : string : speakerName
  • Description : Créez et ajoutez un orateur au chat avec le nom donné, puis le retournez.
  • Retours : Orateur de chat

Enlever le haut-parleur

  • Paramètres : string : speakerName
  • Description : Retire le haut-parleur du chat avec le nom donné.
  • Retours : void

Obtenir un orateur

  • Paramètres : string : speakerName
  • Description : Retourne le locuteur avec le nom donné, ou nil s'il n'existe pas.
  • Retours : Orateur de chat

Obtenir la liste des canaux

  • Paramètres : aucun
  • Description : Retourne une liste des noms de tous les canaux non privés dans le chat.
  • Retours : array< string >

Obtenir la liste de chaînes de jointure automatique

  • Paramètres : aucun
  • Description : Retourne une liste des noms de tous les canaux dans le chat avec AutoJoin réglé sur vrai.
  • Retours : array< string >

Fonction de filtre de message d'enregistrement

  • Paramètres : string : functionId , fonction : func
  • Description : Enregistre une fonction de filtre dans le chat identifié par functionId .Toute modification du message persiste et est affichée lorsque le message traverse toutes les autres fonctions de filtre.Cette fonction reçoit le nom du enceinte, l'objet de message et le canal dans lequel le message a été généré.
  • Retours : void
  • Exemple :

-- Collez cet exemple dans un ModuleScript dans le dossier ChatModules.
-- Cet exemple filtre un mot-clé, et s'il réussit, défini la couleur de chat du message
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verts
local function doFilter(speaker, messageObject, channelName)
-- Vérifiez si le message contient le mot-clé
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Supprimer (filtres) le mot-clé du message, tout en définissant également la couleur de chat
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Fonction de filtre de message non enregistré

  • Paramètres : string : functionId
  • Description : Désenregistre une fonction de filtre (enregistrée par RegisterFilterMessageFunction) donnée son identifiant, functionId .
  • Retours : void

Fonction de commandes de processus d'enregistrement

  • Paramètres : string : functionId , fonction : func
  • Description : Enregistre une fonction de commande de processus dans le chat identifié par functionId .Avant que le message soit filtré, il passera par func (et d'autres fonctions enregistrées par celui-ci).La fonction func doit vérifier si le message invoque une commande.Si c'est le cas, effectuez l'action de la commande et retournez vrai.Le retour du vrai indique que le message était en effet une commande et ne devrait pas être affiché.La fonction peut être désenregistrée en utilisant la fonction UnregisterProcessCmdsFunction.
  • Retours : void
  • Exemple :

-- Collez cet exemple dans un ModuleScript dans le dossier ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- équipmentde tranche de pizza au pepperoni
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule

Fonction de commandes de processus non enregistrées

  • Paramètres : string : functionId
  • Description : Désenregistre un processeur de commande (enregistré par RegisterProcessCommandsFunction ) donné l'identifiant, functionId .
  • Retours : void

Événements

Chaine ajoutée

  • Paramètres : string : channelName
  • Description : Se déclenche lorsqu'un canal est ajouté au chat.

Chaîne supprimée

  • Paramètres : string : channelName
  • Description : Se déclenche lorsqu'un canal est retiré du chat.

Orateur ajouté

  • Paramètres : string : speakerName
  • Description : Se déclenche lorsqu'un orateur est ajouté au chat.

Orateur supprimé

  • Paramètres : string : speakerName
  • Description : Se déclenche lorsqu'un orateur est retiré du chat.

Orateur de chat

Un orateur de chat est la représentation d'une entité qui peut parler dans un canal de chat .Chacun Player connecté au jeu a automatiquement un orateur de chat associé.Des orateurs de chat supplémentaires peuvent être construits pour les non-utilisateurs (tels que les annonceurs ou les messages d'indice) en utilisant ChatService:AddSpeaker() .

Propriétés

Nom

  • Type : string : Name
  • Description : Le nom du enceinte, utilisé pour référencer ce locuteur lors de l'appel de nombreuses autres fonctions.

Méthodes

Channel de jointure

  • Paramètres : string : channelName
  • Description : Ajoute le haut-parleur au canal avec le channelName
  • Retours : void

Quitter le canal

  • Paramètres : string : channelName
  • Description : Retire le haut-parleur du canal avec le channelName
  • Retours : void

Obtenir la liste des canaux

  • Paramètres : Aucun
  • Description : Retourne une liste des noms de tous les canaux auxquels le locuteur est en.
  • Retours : array< string >

Est-dans le canal

  • Paramètres : string : channelName
  • Description : Retourne si le locuteur est dans le canal avec le channelName .
  • Retours : bool

Dites un message

Envoyer un message

  • Paramètres : : , : , : , :
  • Description : Envoie un message au ChatSpeaker avec le nom donné fromSpeaker.Si aucun tel orateur n'est dans le chat (chat privé), cette méthode crée un avertissement et l'orateur ne verra pas le message.
  • Retours : void

Envoyer un message système

  • Paramètres : string : message , string : channelName
  • Description : Envoie un message système au canal de chat avec le channelName donné.Si le haut-parleur n'est pas dans le chat (chat privé), ce message créera un avertissement et les autres haut-parleurs dans le canal ne verront pas le message.
  • Retours : void

Obtenir le joueur

  • Paramètres : Aucun
  • Description : Retourne l'objet Player associé au enceinte.Si le locuteur n'est pas pour un utilisateur (un bot), alors cela renvoie nil .
  • Retours : Player ou nil

Définir des données supplémentaires

  • Paramètres : string : key , Variante data
  • Description : Défini certaines données supplémentaires pour le locuteur sous un spécifique key .Chaque fois que le locuteur envoie un message de chat, ces données supplémentaires sont attachées au message si aucune n'est explicitement fournie avec le message.Par exemple, cela permet de configurerla couleur du chat du enceinte.
  • Retours : void

Obtenir des données supplémentaires

  • Paramètres : string : key
  • Description : Retourne les données supplémentaires associées à la donnée donnée key , définie en utilisant SetExtraData.
  • Retours : Variante

Définir le canal principal

  • Paramètres : string : channelName
  • Description : Définir le haut-parleur pour parler dans le chat (chat privé)fourni. Fires MainChannelSet.
  • Retours : nil

Événements

Message dit

Message reçu

Message du système reçu

ChannelJoined

  • Paramètres : string : channelName , string : channelWelcomeMessage
  • Description : Tiré lorsque le locuteur rejoint le canal de chat avec le channelName donné.

Chaîne gauche

  • Paramètres : string : channelName
  • Description : Tiré lorsque le locuteur quitte un canal de chat avec le channelName donné.

Muet

  • Paramètres : string : channelName , string : reason = nil , int : duration = 0
  • Description : Tiré lorsque le locuteur est muet sur le canal de chat avec le donné channelName pour la durée donnée (si fournie).Il peut ou non y avoir un reason fourni.

Désactivé

  • Paramètres : string : channelName
  • Description : Tiré lorsque le locuteur est désactivé sur le canal de chat avec le channelName donné.

ExtraDataMise à jour

  • Paramètres : string : key , Variante data
  • Description : Tiré lorsque la valeur par défaut d'une clé dans les données supplémentaires du enceinteest mise à jour en utilisant SetExtraData.

Set de canal principal

  • Paramètres : string : channelName
  • Description : Tiré lorsque le canal principal des orateurs est modifié en ChatChannel avec le channelName donné.

Message de chat

Un message de chat est une structure de données représentant un message envoyé par un orateur de chat.Il contient des données sur le message, y compris la longueur du texte, si le texte a été filtré par Roblox, et des données supplémentaires sur l'apparence du message.

Propriétés

ID

  • Type : int
  • Description : Un identifiant numérique unique pour le message.

Orateur à partir de

Chaîne originale

Est filtré

  • Type : bool
  • Description : Décrit si le message est filtré par Roblox (si c'est vrai, le message sera nil )

Longueur du message

  • Type : int
  • Description : La longueur du message. Vous pouvez l'utiliser pour générer une chaîne hachée si le message a été filtré.

Message

  • Type : string : ou nil
  • Description : Le texte du message. Cette propriété sera nil si IsFiltered est vrai.

Type de message

  • Type : string :
  • Description : Le type du message. Ces types sont décrits dans le module ChatConstants :
  • Valeurs possibles : "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"

Temps

  • Type : int
  • Description : Un timestamp ; la valeur de os.time() à la créationsdu message.

Data supplémentaire

  • Type : dictionnaire< string , Variante>
  • Description : Un dictionnaire de métadonnées pour ce message.Cela est utilisé pour modifier l'apparence du message.Les clés suivantes peuvent être présentes :

Channel de chat

ChatChannel est un objet qui stocke des données sur un seul chat (chat privé), ce qui est un moyen par lequel des messages peuvent être échangés entre ChatSpeakers.Il a également des propriétés d'autorisation d'accès qui déterminent la visibilité des messages ainsi que si les utilisateurs peuvent rejoindre ou quitter le canal manuellement (en utilisant les commandes /join ou /leave).

Par défaut, chaque utilisateur a un Orateur de chat qui est automatiquement ajouté aux canaux de chat "Tout" et "Système" (bien que "Système" soit seulement en lecture).Si l'utilisateur est sur un Player.Team, il aura également accès à un canal pour cette seule équipe.

Propriétés

Nom

  • Type : string
  • Description : Le nom du chat (chat privé), utilisé pour référencer le canal dans d'autres fonctions.

Message d'accueil

  • Type : string
  • Description : Un message à afficher lorsqu'un utilisateur rejoint le chat (chat privé).

Rejoignable

  • Type : bool
  • Description : Détermine si un utilisateur peut rejoindre manuellement un canal en utilisant la commande /join.Un utilisateur peut toujours être ajouté à un canal en utilisant ChatSpeaker:JoinChannel() ou d'autres moyens même si cette propriété est fausse.

Laisseable

  • Type : bool
  • Description : Détermine si un utilisateur peut quitter manuellement un canal en utilisant la commande /leave.Un utilisateur peut toujours être retiré d'un canal en utilisant ChatSpeaker:LeaveChannel() ou d'autres moyens même si cette propriété est fausse.

Rejoindement automatique

  • Type : bool
  • Description : Détermine si le ChatSpeaker d'un joueur rejoindra automatiquement le canal lorsqu'il rejoint le jeu.Les orateurs non utilisateurs ne rejoindront pas automatiquement les canaux, même lorsque cette propriété est vraie (vous pouvez utiliser ChatSpeaker:JoinChannel() pour le faire).

Privé

  • Type : bool
  • Description : Détermine si le canal sera inclus dans la liste des canaux retournés par ChatService:GetChannelList() .Ceci pour les chats secrets et les chats d'équipe.

Méthodes

Orateur de coup de pied

  • Paramètres : string : speakerName , string : reason = nil
  • Description : Retire le haut-parleur avec le speakerName donné du chat (chat privé), envoyant un message à l'utilisateur et au canal depuis lequel l'utilisateur a été expulsé.Si un reason est fourni, la raison sera incluse dans le message.
  • Retours : void

Haut-parleur muet

  • Paramètres : string : speakerName , string : reason = nil , intduration = 0
  • Description : Coupe le son du haut-parleur avec le speakerName dans le canal pour une durée spécifiée en secondes.Si duration est nil ou 0, le silence est indéfini.Si reason est fourni, un message sera envoyé au canal avec la raison incluse.
  • Retours : void

Désactiver le haut-parleur

  • Paramètres : string : speakerName
  • Description : Désactive le haut-parleur avec le speakerName dans le chat (chat privé).
  • Retours : void

Est-ce que SpeakerMuted

  • Paramètres : string : speakerName
  • Description : Décrit si le locuteur avec le donné speakerName est actuellement muet dans le chat (chat privé).
  • Retours : bool

Obtenir la liste des orateurs

  • Paramètres : Aucun
  • Description : Retourne une liste contenant tous les noms du Orateur de chat actuellement dans le chat (chat privé).
  • Retours : array< string >

Envoyer un message système

  • Paramètres : string : message
  • Description : Envoie un message du "système" ChatSpeaker au chat (chat privé).
  • Retours : void

Fonction de filtre de message d'enregistrement

  • Paramètres : string : functionId , fonctionfunc
  • Description : Enregistre une fonction de filtre, func , identifiée par functionId au chat (chat privé).La fonction de filtre sera appelée avec le ChatSpeaker, le ChatMessage et le string: nom du canal dans lequel le message a été généré.Les modifications du message persisteront et seront affichées après filtrage.
  • Retours : void
  • Exemple :

-- Collez cet exemple dans un ModuleScript dans le dossier ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- équipmentde tranche de pizza au pepperoni
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule

Fonction de filtre de message non enregistré

  • Paramètres : string : functionId
  • Description : Désenregistre une fonction de filtre (enregistrée par RegisterFilterMessageFunction) donnée son identifiant, functionId .
  • Retours : void

Fonction de commandes de processus d'enregistrement

  • Paramètres : string : functionId , fonctionfunc
  • Description : Enregistre une fonction de commande de processus, func , identifiée par functionId au chat.Avant que le message soit filtré, il passera par func (et d'autres fonctions enregistrées par cette dernière).La fonction func doit vérifier si le message invoque une commande.Si c'est le cas, effectuez l'action de la commande et retournez vrai.Le retour du vrai indique que le message était en effet une commande et ne devrait pas être affiché.La fonction peut être désenregistrée en utilisant la fonction UnregisterProcessCmdsFunction.
  • Retours : void
  • Exemple :

-- Collez cet exemple dans un ModuleScript dans le dossier ChatModules.
-- Cet exemple filtre un mot-clé, et s'il réussit, défini la couleur de chat du message
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verts
local function doFilter(speaker, messageObject, channelName)
-- Vérifiez si le message contient le mot-clé
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Supprimer (filtres) le mot-clé du message, tout en définissant également la couleur de chat
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Créer un canal et enregistrer la fonction de filtre
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Fonction de commandes de processus non enregistrées

  • Paramètres : string : functionId
  • Description : Désenregistre un processeur de commande (enregistré par RegisterProcessCommandsFunction) donné l'identifiant, functionId .
  • Retours : void

Événements

Message publié

  • Paramètres : Message de chat : message
  • Description : Se déclenche lorsqu'un message est publié dans le chat (chat privé).

Orateur rejoint

  • Paramètres : string : speakerName
  • Description : Se déclenche lorsqu'un ChatSpeaker rejoint le chat (chat privé).

Orateur gauche

  • Paramètres : string : speakerName
  • Description : Se déclenche lorsqu'un Orateur de chat quitte le chat (chat privé).

Orateur muet

  • Paramètres : string : speakerName , string : reason , intduration = 0
  • Description : Se déclenche lorsqu'un Orateur de chat a été coupé dans le chat (chat privé).

Orateur désactivé

  • Paramètres : string : speakerName
  • Description : Se déclenche lorsqu'un ChatSpeaker est désactivé.

Sur cette page