You are viewing a potentially older version of this package. View all versions.
AndrewLin-FomoTelegram-0.2.2 icon

FomoTelegram

FomoTelegram: A Fomo submod that relays On-Together chat messages to a Telegram chat via a Telegram Bot. Use /fomohelp and look for /fomotelegram commands

Date uploaded 3 months ago
Version 0.2.2
Download link AndrewLin-FomoTelegram-0.2.2.zip
Downloads 38
Dependency string AndrewLin-FomoTelegram-0.2.2

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305
AndrewLin-Fomo-1.2.9 icon
AndrewLin-Fomo

FOMO: A mod for On-Together to expand chat size, log chats, and relay messages via WebSocket. Use /fomohelp

Preferred version: 1.2.9

README

FomoTelegram

A Fomo add-on for On Together that relays in-game chat messages to a Telegram group or channel via a Telegram Bot.

Requirements

  • Fomo (hard dependency)

Features

  • Forwards global chat, local chat, and system notifications to any Telegram chat or group
  • Respects the Fomo ChatSinkLocalRange setting — local messages from players outside your range are filtered before reaching Telegram
  • Rate-limited background send queue — won't hammer the Telegram API during busy chat sessions
  • Bidirectional relay — messages sent from Telegram back to the bot are injected into the in-game chat
  • Configurable format strings for chat messages and notifications
  • Per-category toggles (global / local / notifications) and a master on/off switch

Setup

1. Create a Telegram Bot

  1. Open Telegram and message @BotFather
  2. Send /newbot and follow the prompts
  3. Copy the API token (looks like 123456789:ABCdefGHI…)

2. Find your Chat ID

  1. Add @userinfobot to your group or DM it
  2. It will reply with the chat ID
  3. Group IDs are negative (e.g. -1001234567890); user IDs are positive

3. Configure the mod

After the first run a config file is generated at:

BepInEx/config/com.andrewlin.ontogether.fomotelegram.cfg

Fill in TelegramBotApiKey and TelegramChatId, then restart the game.

[Telegram]
TelegramBotApiKey = 123456789:ABCdefGHI…
TelegramChatId    = -1001234567890

[Filters]
RelayGlobalChat    = true
RelayLocalChat     = true
RelayNotifications = true

[Formatting]
MessageFormat      = [{channel:short}] {username}: {message}
NotificationFormat = {message}

In-Game Commands

Type any command into the in-game chat. Commands start with / and are not sent to other players.

  • /fomotelegramtoggle (/ftt) — Toggle Telegram forwarding on/off
  • /fomotelegramsetupinfo (/ftsinfo) — Print setup instructions and current config status
  • /fomotelegrammessageformat [format] (/ftmf) — Get or set the chat message format string
  • /fomotelegramnotificationformat [format] (/ftnf) — Get or set the notification format string

Examples

/fomotelegramtoggle
/fomotelegrammessageformat [{timestamp:HH:mm}] [{channel:short}] {username}: {message}

Configuration

Located in BepInEx/config/com.andrewlin.ontogether.fomotelegram.cfg

  • General
    • EnableFeature (default: true) — Master switch; disable to pause all Telegram forwarding without removing the plugin
  • Telegram
    • TelegramBotApiKey — Your bot token from @BotFather (e.g. 123456:ABC-DEF…)
    • TelegramChatId — Target chat / group / channel ID (group IDs are negative)
  • Filters
    • RelayGlobalChat (default: true) — Forward global chat messages to Telegram
    • RelayLocalChat (default: true) — Forward local chat messages to Telegram
    • RelayNotifications (default: true) — Forward system notifications (joins, leaves, etc.) to Telegram
  • Formatting
    • MessageFormat (default: [{channel:short}] {username}: {message}) — Format string for chat messages sent to Telegram
    • NotificationFormat (default: {message}) — Format string for system notifications sent to Telegram

Format Placeholders

The MessageFormat and NotificationFormat settings accept the following placeholders:

  • {timestamp} — message time; accepts a C# DateTime format specifier (e.g. {timestamp:HH:mm})
  • {channel} — full channel label use {channel:short} for just the first character (G / L)
  • {username} — display name of the sender
  • {message} — message body
  • {distance} — distance in metres for local messages, empty for global/notifications
  • {source} — internal message source identifier
  • {playerid} — sender's player ID

Installation

Use r2modman or the Thunderstore app for the simplest install. Fomo must be installed first.

Manual:

  1. Install Fomo first
  2. Copy AndrewLin.FomoTelegram.dll into BepInEx/plugins/
  3. Launch the game — a config file will be generated at BepInEx/config/com.andrewlin.ontogether.fomotelegram.cfg
  4. Fill in TelegramBotApiKey and TelegramChatId and restart

Dependencies

  • Fomo — Core mod providing IChatSink, ChatEntry, ChatSinkManager
  • BepInEx 5.x — Mod loader
  • Newtonsoft.Json — JSON parsing for Telegram HTTP API responses

Telegram communication uses the standard .NET HttpClient against the Telegram Bot HTTP API directly — no third-party Telegram library, ensuring full Mono/BepInEx compatibility.

License

MIT — same as the parent Fomo mod.

CHANGELOG

Changelog

[1.2.9] - 2026-04-17

Added

  • /fomotelegramrestart (/ftr) - reload config from disk and restart the Telegram connection without a game restart. Disposes the old manager and creates a new one with the freshly loaded credentials.
  • /fomotelegramreloadconfig (/ftrc) - reload config from disk and display the current API key (masked) and chat ID, without reconnecting.

Changed

  • Setup no longer requires a game restart after filling in the config. Edit the config file then run /ftr to connect immediately.
  • API key is masked in all notifications (first 4 + last 4 characters visible) to prevent accidental exposure in chat.

[1.2.8] - 2026-04-16

Changed

  • Improved error logging in FomoTelegramManager.ValidateAndStartReceiverAsync:
    • HttpRequestException (network/TLS failure) is now caught separately and logged as a network error rather than misleadingly suggesting an invalid API key.
    • Full inner exception chain is logged so the root cause (DNS, TLS negotiation, missing certificates) is visible.
    • Telegram error_code and description fields are extracted from the JSON response and logged when the API itself rejects the request.
    • Added LogDebug of the raw getMe HTTP status and response body.
  • Added ServicePointManager.SecurityProtocol = Tls12 in the constructor to fix TLS negotiation failures on Mono/Unity.

[1.2.7] - 2026-04-12

Changed

  • Dependency update to Alpha 0.0.11

[0.2.3] - 2026-03-06

Changed

  • Fixed set message and notification format in-game

[0.2.2] - 2026-03-04

Changed

  • Incoming Telegram messages are now routed via ChatUtils.DispatchIncomingText: /fomo* commands are processed directly by ChatCommandManager; other slash commands are injected via the UI input system; plain text is sent through the regular chat pipeline
  • TMP tag stripping now also removes <align> and <rotate> tags

[0.2.1] - 2026-03-02

Fixed

  • Build configuration: corrected Directory.Build.props and .csproj to restore clean builds

[0.1.0] - 2026-03-01

Added

  • Initial release of FomoTelegram
  • FomoTelegramPlugin — BepInEx entry point; reads config and registers the sink with Fomo's SinkManager
  • FomoTelegramManager — owns an HttpClient pointed at the Telegram Bot HTTP API, validates credentials on startup, and runs a rate-limited background send queue (≥50 ms between messages); also runs a long-poll receiver loop to inject Telegram replies back into the game
  • TelegramChatSinkIChatSink implementation; applies per-channel filters (global / local / notifications) and formats messages using configurable format strings
  • /fomotelegramtoggle (/ftt) — toggle Telegram forwarding on/off
  • /fomotelegramsetupinfo (/ftsinfo) — print setup instructions and current config status in-game
  • /fomotelegrammessageformat (/ftmf) — get or set the chat message format string at runtime
  • /fomotelegramnotificationformat (/ftnf) — get or set the notification format string at runtime
  • Config entries: EnableFeature, TelegramBotApiKey, TelegramChatId, RelayGlobalChat, RelayLocalChat, RelayNotifications, MessageFormat, NotificationFormat
  • Uses HttpClient + Newtonsoft.Json against the Telegram Bot HTTP API directly — no Telegram.Bot library dependency, ensuring full Mono/BepInEx compatibility