diff --git a/config.template.yaml b/config.template.yaml
new file mode 100644
index 0000000..0369798
--- /dev/null
+++ b/config.template.yaml
@@ -0,0 +1,238 @@
+homeserver:
+ address: https://matrix.beeper.com/_hungryserv/inswe
+ domain: beeper.local
+ verify_ssl: true
+ software: hungry
+ http_retry_count: 4
+ async_media: true
+ websocket: true
+ ping_interval_seconds: -1
+
+appservice:
+ address: http://localhost:29317
+ hostname: 0.0.0.0
+ port: 29317
+ max_body_size: 1
+ database: sqlite:////data/bridge.db
+ id: REPLACE_REG_ID
+ bot_username: REPLACE_BOT_USERNAME
+ as_token: REPLACE_AS_TOKEN
+ hs_token: REPLACE_HS_TOKEN
+ ephemeral_events: true
+ async_transactions: true
+
+metrics:
+ enabled: false
+ listen_port: 8000
+
+manhole:
+ enabled: false
+
+bridge:
+ username_template: telegram_{userid}
+ alias_template: telegram_{groupname}
+ displayname_template: '{displayname}'
+ displayname_preference:
+ - full name
+ - username
+ - phone number
+ displayname_max_length: 100
+ allow_avatar_remove: true
+ allow_contact_info: true
+ max_initial_member_sync: 20
+ max_member_count: 10000
+ sync_channel_members: false
+ skip_deleted_members: true
+ startup_sync: false
+ sync_update_limit: 0
+ sync_create_limit: 10
+ sync_deferred_create_all: true
+ sync_direct_chats: true
+ max_telegram_delete: 10
+ sync_matrix_state: true
+ allow_matrix_login: true
+ public_portals: false
+ sync_with_custom_puppets: false
+ sync_direct_chat_list: false
+ double_puppet_server_map:
+ beeper.com: https://matrix.beeper.com/_hungryserv/inswe
+ double_puppet_allow_discovery: false
+ telegram_link_preview: true
+ invite_link_resolve: false
+ caption_in_message: true
+ image_as_file_size: 10
+ image_as_file_pixels: 5000000
+ parallel_file_transfer: false
+ federate_rooms: false
+ always_custom_emoji_reaction: false
+ animated_sticker:
+ target: webp
+ convert_from_webm: false
+ args:
+ width: 256
+ height: 256
+ fps: 25
+ animated_emoji:
+ target: webp
+ args:
+ width: 64
+ height: 64
+ fps: 25
+ encryption:
+ allow: true
+ default: true
+ appservice: true
+ msc4190: false
+ require: true
+ allow_key_sharing: true
+ delete_keys:
+ delete_outbound_on_ack: true
+ dont_store_outbound: false
+ ratchet_on_decrypt: true
+ delete_fully_used_on_decrypt: true
+ delete_prev_on_new_session: true
+ delete_on_device_delete: true
+ periodically_delete_expired: true
+ delete_outdated_inbound: true
+ verification_levels:
+ receive: cross-signed-tofu
+ send: cross-signed-tofu
+ share: cross-signed-tofu
+ rotation:
+ enable_custom: true
+ milliseconds: 2592000000
+ messages: 10000
+ disable_device_change_key_rotation: true
+
+ private_chat_portal_meta: default
+ disable_reply_fallbacks: true
+ cross_room_replies: false
+ delivery_receipts: false
+ delivery_error_reports: false
+ incoming_bridge_error_reports: true
+ message_status_events: true
+ resend_bridge_info: false
+ mute_bridging: true
+ pinned_tag: m.favourite
+ archive_tag: m.lowpriority
+ tag_only_on_create: true
+ bridge_matrix_leave: false
+ kick_on_logout: false
+ always_read_joined_telegram_notice: true
+ create_group_on_invite: false
+ backfill:
+ enable: true
+ normal_groups: true
+ unread_hours_threshold: 720
+ forward_limits:
+ initial:
+ user: 50
+ normal_group: 100
+ supergroup: 50
+ channel: 50
+ sync:
+ user: 0
+ normal_group: 0
+ supergroup: 0
+ channel: 0
+ forward_timeout: 900
+ incremental:
+ messages_per_batch: 100
+ post_batch_delay: 20
+ max_batches:
+ user: -1
+ normal_group: -1
+ supergroup: 10
+ channel: -1
+ initial_power_level_overrides:
+ user: {}
+ group: {}
+ bot_messages_as_notices: true
+ bridge_notices:
+ default: false
+ exceptions: []
+ relay_user_distinguishers: ["🟦", "🟣", "🟩", "⭕️", "🔶", "⬛️", "🔵", "🟢"]
+ message_formats:
+ m.text: '$distinguisher $sender_displayname: $message'
+ m.notice: '$distinguisher $sender_displayname: $message'
+ m.emote: '* $distinguisher $sender_displayname $message'
+ m.file: '$distinguisher $sender_displayname sent a file: $message'
+ m.image: '$distinguisher $sender_displayname sent an image: $message'
+ m.audio: '$distinguisher $sender_displayname sent an audio file: $message'
+ m.video: '$distinguisher $sender_displayname sent a video: $message'
+ m.location: '$distinguisher $sender_displayname sent a location: $message'
+ emote_format: '* $mention $formatted_body'
+ state_event_formats:
+ join: $distinguisher $displayname joined the room.
+ leave: $distinguisher $displayname left the room.
+ name_change: $distinguisher $prev_displayname changed their name to $distinguisher $displayname
+ filter:
+ mode: blacklist
+ list: []
+ users: true
+ command_prefix: '!tg'
+ management_room_text:
+ welcome: Hello, I'm a Telegram bridge bot.
+ welcome_connected: Use `help` for help.
+ welcome_unconnected: Use `help` for help or `login` to log in.
+ additional_help: ''
+ management_room_multiple_messages: false
+ permissions:
+ "beeper.local": user
+ "beeper.com": user
+ "@inswe:beeper.com": admin
+ relaybot:
+ private_chat:
+ invite: []
+ state_changes: true
+ message: This is a Matrix bridge relaybot and does not support direct chats
+ group_chat_invite: []
+ ignore_unbridged_group_chat: true
+ authless_portals: true
+ whitelist_group_admins: true
+ ignore_own_incoming_events: true
+ whitelist: []
+
+telegram:
+ api_id: REPLACE_API_ID
+ api_hash: REPLACE_API_HASH
+ bot_token: disabled
+ catch_up: true
+ sequential_updates: true
+ exit_on_update_error: true
+ force_refresh_interval_seconds: 0
+ connection:
+ timeout: 120
+ retries: 5
+ retry_delay: 1
+ flood_sleep_threshold: 60
+ request_retries: 5
+ use_ipv6: false
+ device_info:
+ device_model: Beeper (self-hosted)
+ system_version: auto
+ app_version: auto
+ lang_code: en
+ system_lang_code: en
+ server:
+ enabled: false
+ dc: 2
+ ip: 149.154.167.40
+ port: 80
+ proxy:
+ type: disabled
+
+logging:
+ version: 1
+ formatters:
+ colored:
+ format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s"
+ datefmt: "%b %d %H:%M:%S"
+ handlers:
+ console:
+ class: logging.StreamHandler
+ formatter: colored
+ stream: ext://sys.stdout
+ root:
+ level: INFO
+ handlers: [console]