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 | 2 months ago |
| Version | 1.2.6 |
| Download link | AndrewLin-FomoTelegram-1.2.6.zip |
| Downloads | 16 |
| Dependency string | AndrewLin-FomoTelegram-1.2.6 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305AndrewLin-Fomo
FOMO: A mod for On-Together to expand chat size, log chats, and relay messages via WebSocket. Use /fomohelp
Preferred version: 1.2.9README
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
ChatSinkLocalRangesetting — 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
- Open Telegram and message @BotFather
- Send
/newbotand follow the prompts - Copy the API token (looks like
123456789:ABCdefGHI…) to somewhere safe - Say hello to your own bot so it gains the rights to talk to you.
2. Find your Chat ID
- Say hello to user @userinfobot.
- It will reply with your chat ID.
- User chat IDs are positive e.g.
123456789
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 = 234567890
[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 TelegramRelayLocalChat(default:true) — Forward local chat messages to TelegramRelayNotifications(default:true) — Forward system notifications (joins, leaves, etc.) to Telegram
- Formatting
MessageFormat(default:[{channel:short}] {username}: {message}) — Format string for chat messages sent to TelegramNotificationFormat(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:
- Install Fomo first
- Copy
AndrewLin.FomoTelegram.dllintoBepInEx/plugins/ - Launch the game — a config file will be generated at
BepInEx/config/com.andrewlin.ontogether.fomotelegram.cfg - Fill in
TelegramBotApiKeyandTelegramChatIdand 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
HttpClientagainst 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
/ftrto 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_codeanddescriptionfields are extracted from the JSON response and logged when the API itself rejects the request. - Added
LogDebugof the rawgetMeHTTP status and response body.
- Added
ServicePointManager.SecurityProtocol = Tls12in 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 byChatCommandManager; 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.propsand.csprojto 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'sSinkManagerFomoTelegramManager— owns anHttpClientpointed 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 gameTelegramChatSink—IChatSinkimplementation; 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.Jsonagainst the Telegram Bot HTTP API directly — noTelegram.Botlibrary dependency, ensuring full Mono/BepInEx compatibility