chatBridge

  • builtin
  • by Takaro
  • Takaro >=0.0.1
  • all
Version

Built-in modules ship with Takaro — no import needed.

View export JSON

Connect chat to other services like Discord.

Configuration 3

Settings you fill in when installing the module on a server.

SettingTypeDefaultDescription
sendPlayerConnected Send player connected boolean true Send a message when a player connects.
sendPlayerDisconnected Send player disconnected boolean true Send a message when a player disconnects.
onlyGlobalChat Only global chat boolean true Only relay messages from global chat. (no team chat or private messages)
Raw config schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "sendPlayerConnected": {
      "title": "Send player connected",
      "type": "boolean",
      "description": "Send a message when a player connects.",
      "default": true
    },
    "sendPlayerDisconnected": {
      "title": "Send player disconnected",
      "type": "boolean",
      "description": "Send a message when a player disconnects.",
      "default": true
    },
    "onlyGlobalChat": {
      "title": "Only global chat",
      "type": "boolean",
      "default": true,
      "description": "Only relay messages from global chat. (no team chat or private messages)"
    }
  },
  "additionalProperties": false
}
Raw UI schema
{}

Hooks 4

Code that runs in reaction to a game or Takaro event.

  • DiscordToGame

    Hook for discord-message events

    Hook source
    import { takaro, data } from '@takaro/helpers';
    async function main() {
        try {
            if (data.eventData.author.isBot) {
                return;
            }
            await takaro.gameserver.gameServerControllerSendMessage(data.gameServerId, {
                message: `[D] ${data.eventData.author.displayName}:  ${data.eventData.msg}`,
            });
        }
        catch (error) {
            console.error(error);
            await takaro.discordControllerSendMessage(data.discordChannelId, {
                message: 'Failed to forward your message to the game. Please try again later.',
            });
        }
    }
    await main();
    //# sourceMappingURL=DiscordToGame.js.map
  • GameToDiscord

    Hook for chat-message events

    Hook source
    import { takaro, data } from '@takaro/helpers';
    async function main() {
        const onlyGlobal = data.module.userConfig.onlyGlobalChat;
        if (onlyGlobal && data.eventData.channel !== 'global') {
            return;
        }
        const discordChannel = data.module.systemConfig.hooks.DiscordToGame.discordChannelId;
        const sender = data.player ? data.player.name : 'Non-player';
        const message = `**${sender}**: ${data.eventData.msg}`;
        await takaro.discord.discordControllerSendMessage(discordChannel, {
            message: message,
        });
    }
    await main();
    //# sourceMappingURL=GameToDiscord.js.map
  • PlayerConnected

    Hook for player-connected events

    Hook source
    import { takaro, data } from '@takaro/helpers';
    async function main() {
        const discordChannel = data.module.systemConfig.hooks.DiscordToGame.discordChannelId;
        await takaro.discord.discordControllerSendMessage(discordChannel, {
            message: `[⚡ Connected]: ${data.player.name}`,
        });
    }
    await main();
    //# sourceMappingURL=PlayerConnected.js.map
  • PlayerDisconnected

    Hook for player-disconnected events

    Hook source
    import { takaro, data } from '@takaro/helpers';
    async function main() {
        const discordChannel = data.module.systemConfig.hooks.DiscordToGame.discordChannelId;
        await takaro.discord.discordControllerSendMessage(discordChannel, {
            message: `[👋 Disconnected]: ${data.player.name}`,
        });
    }
    await main();
    //# sourceMappingURL=PlayerDisconnected.js.map