# This is a sample of the config file showing all available options.
# Where possible we have documented what they do, and all values are the
# default values.

bridge:
  # Domain part of the bridge, e.g. matrix.org
  domain: "localhost"
  # This should be your publicly-facing URL because Discord may use it to
  # fetch media from the media store.
  homeserverUrl: "http://localhost:8008"
  # The TCP port on which the appservice runs on.
  port: 9005
  # Interval at which to process users in the 'presence queue'. If you have
  # 5 users, one user will be processed every 500 milliseconds according to the
  # value below. This has a minimum value of 250.
  # WARNING: This has a high chance of spamming the homeserver with presence
  # updates since it will send one each time somebody changes state or is online.
  presenceInterval: 500
  # Disable setting presence for 'ghost users' which means Discord users on Matrix
  # will not be shown as away or online.
  disablePresence: false
  # Disable sending typing notifications when somebody on Discord types.
  disableTypingNotifications: false
  # Disable deleting messages on Discord if a message is redacted on Matrix.
  disableDeletionForwarding: false
  # Disable portal bridging, where Matrix users can search for unbridged Discord
  # rooms on their Matrix server.
  disablePortalBridging: false
  # Enable users to bridge rooms using !discord commands. See
  # https://t2bot.io/discord for instructions.
  enableSelfServiceBridging: false
  # Disable sending of read receipts for Matrix events which have been
  # successfully bridged to Discord.
  disableReadReceipts: false
  # Disable Join Leave echos from matrix
  disableJoinLeaveNotifications: false
  # Disable Invite echos from matrix
  disableInviteNotifications: false
  # Auto-determine the language of code blocks (this can be CPU-intensive)
  determineCodeLanguage: false
  # MXID of an admin user that will be PMd if the bridge experiences problems. Optional
  adminMxid: '@admin:localhost'
  # The message to send to the bridge admin if the Discord token is not valid
  invalidTokenMessage: 'Your Discord bot token seems to be invalid, and the bridge cannot function. Please update it in your bridge settings and restart the bridge'
# Authentication configuration for the discord bot.
auth:
  # This MUST be a string (wrapped in quotes)
  clientID: "12345"
  botToken: "foobar"
  # You must enable "Privileged Gateway Intents" in your bot settings on discord.com (e.g. https://discord.com/developers/applications/12345/bot)
  # for this to work
  usePrivilegedIntents: false
logging:
  # What level should the logger output to the console at.
  console: "warn" #silly, verbose, info, http, warn, error, silent
  lineDateFormat: "MMM-D HH:mm:ss.SSS" # This is in moment.js format
  files:
    - file: "debug.log"
      disable:
        - "PresenceHandler" # Will not capture presence logging
    - file: "warn.log" # Will capture warnings
      level: "warn"
    - file: "botlogs.log" # Will capture logs from DiscordBot
      level: "info"
      enable:
        - "DiscordBot"
database:
  # You may either use SQLite or Postgresql for the bridge database, which contains
  # important mappings for events and user puppeting configurations.
  # Use the filename option for SQLite, or connString for Postgresql.
  # If you are migrating, see https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#migrate-to-postgres-from-sqlite
  # WARNING: You will almost certainly be fine with sqlite unless your bridge
  # is in heavy demand and you suffer from IO slowness.
  filename: "discord.db"
  # connString: "postgresql://user:password@localhost/database_name"
room:
  # Set the default visibility of alias rooms, defaults to "public".
  # One of: "public", "private"
  defaultVisibility: "public"
channel:
    # Pattern of the name given to bridged rooms.
    # Can use :guild for the guild name and :name for the channel name.
    namePattern: "[Discord] :guild :name"
    # Changes made to rooms when a channel is deleted.
    deleteOptions:
       # Prefix the room name with a string.
       #namePrefix: "[Deleted]"
       # Prefix the room topic with a string.
       #topicPrefix: "This room has been deleted"
       # Disable people from talking in the room by raising the event PL to 50
       disableMessaging: false
       # Remove the discord alias from the room.
       unsetRoomAlias: true
       # Remove the room from the directory.
       unlistFromDirectory: true
       # Set the room to be unavailable for joining without an invite.
       setInviteOnly: true
       # Make all the discord users leave the room.
       ghostsLeave: true
limits:
    # Delay in milliseconds between discord users joining a room.
    roomGhostJoinDelay: 6000
    # Lock timeout in milliseconds before sending messages to discord to avoid
    # echos. Default is rather high as the lock will most likely time out
    # before anyways.
    # echos = (Copies of a sent message may arrive from discord before we've
    # fininished handling it, causing us to echo it back to the room)
    discordSendDelay: 1500
    # Set a maximum of rooms to be bridged.
    # roomCount: 20
ghosts:
    # Pattern for the ghosts nick, available is :nick, :username, :tag and :id
    nickPattern: ":nick"
    # Pattern for the ghosts username, available is :username, :tag and :id
    usernamePattern: ":username#:tag"
# Prometheus-compatible metrics endpoint
metrics:
    enable: false
    port: 9001
    host: "127.0.0.1"
