Supported Messaging Channels for CloddsBot: Complete Platform List and Configuration Guide
CloddsBot supports 20 messaging platforms including Telegram, Discord, WhatsApp, Slack, and Microsoft Teams through a modular Channel Manager that auto-discovers adapters based on your configuration.
The alsk1992/CloddsBot repository implements a universal bot framework capable of operating across virtually every major messaging ecosystem. Understanding the supported messaging channels for CloddsBot is essential for deploying the right integrations for your use case, whether you need consumer chat apps, enterprise collaboration tools, or decentralized communication protocols.
Supported Messaging Platforms
The Channel Manager in src/channels/index.ts maintains a hard-coded registry of adapters. During startup, it iterates through factory functions and instantiates only the platforms with valid credentials present in your configuration.
Consumer Chat and Social Platforms
CloddsBot connects to popular messaging apps used by billions of users:
- Telegram:
createTelegramChannelfactory insrc/channels/telegram/index.ts(uses grammY library) - Discord:
createDiscordChannelfactory insrc/channels/discord/index.ts(uses discord.js) - WhatsApp:
createWhatsAppChannelfactory insrc/channels/whatsapp/index.ts(Twilio/WhatsApp API) - iMessage:
createiMessageChannelfactory insrc/channels/imessage/index.ts(macOS only) - BlueBubbles:
createBlueBubblesChannelfactory insrc/channels/bluebubbles/index.ts(iMessage bridge for non-macOS) - Signal:
createSignalChannelfactory insrc/channels/signal/index.ts - LINE:
createLineChannelfactory insrc/channels/line/index.ts - Zalo: Dual support via
createZaloChannel(Official Account) andcreateZaloPersonalChannel(Personal) insrc/channels/zalo/index.ts
Enterprise Collaboration Tools
For workplace environments, CloddsBot supports:
- Slack:
createSlackChannelfactory insrc/channels/slack/index.ts(Bolt SDK) - Microsoft Teams:
createTeamsChannelfactory insrc/channels/teams/index.ts - Google Chat:
createGoogleChatChannelfactory insrc/channels/googlechat/index.ts - Mattermost:
createMattermostChannelfactory insrc/channels/mattermost/index.ts - Nextcloud Talk:
createNextcloudTalkChannelfactory insrc/channels/nextcloud-talk/index.ts
Decentralized and Specialized Protocols
For privacy-focused or specialized use cases:
- Matrix:
createMatrixChannelfactory insrc/channels/matrix/index.ts - Nostr:
createNostrChannelfactory insrc/channels/nostr/index.ts(decentralized protocol) - Tlon (Urbit):
createTlonChannelfactory insrc/channels/tlon/index.ts - Twitch:
createTwitchChannelfactory insrc/channels/twitch/index.ts(streaming platform chat) - Voice (Telephony):
createVoiceChannelfactory insrc/channels/voice/index.ts(Twilio/Telephony)
Web-Based Interface
- WebChat:
createWebChatChannelfactory insrc/channels/webchat/index.tsprovides a WebSocket-based UI for browser-based interactions.
How the Channel Manager Discovers Adapters
The ChannelManager class in src/channels/index.ts handles platform discovery through a declarative registry. It checks for required credentials in your configuration and calls the corresponding factory function only when the platform is enabled.
If credentials are missing, the channel is skipped silently, allowing the bot to start even with partial integrations. Each instantiated adapter implements the common ChannelAdapter interface, providing standardized methods: start(), stop(), sendMessage(), editMessage(), deleteMessage(), reactMessage(), sendPoll(), and createDraftStream().
Configuring Messaging Channels
Enable platforms by adding them to your config.yaml or environment variables. The Channel Manager reads this configuration during initialization.
channels:
telegram:
enabled: true
botToken: YOUR_TELEGRAM_BOT_TOKEN
discord:
enabled: true
token: YOUR_DISCORD_BOT_TOKEN
slack:
enabled: false # Disabled - bot runs without this integration
whatsapp:
enabled: true
accountSid: YOUR_TWILIO_SID
authToken: YOUR_TWILIO_TOKEN
Sending Messages Across Platforms
Once initialized, the Channel Manager routes outgoing messages to the appropriate adapter based on the platform field. Import createChannelManager from src/channels/index to interact with the system programmatically.
import { createChannelManager } from './src/channels/index';
import { loadConfig } from './src/utils/config';
const cfg = await loadConfig();
const manager = await createChannelManager(cfg.channels, {
onMessage: async (msg) => {
// Handle incoming messages
console.log(`Received from ${msg.platform}: ${msg.text}`);
},
});
await manager.start();
// Send to Telegram
await manager.send({
platform: 'telegram',
chatId: '12345678',
text: 'Hello from Clodds Bot!',
parseMode: 'Markdown',
});
// Send to Discord
await manager.send({
platform: 'discord',
channelId: '987654321',
text: 'Hello Discord users!',
});
Using Draft Streams for Progressive Updates
The createDraftStream method (available on supported adapters like Telegram) allows you to send progressive message updates, ideal for long-running operations.
const telegramAdapter = manager.getAdapters()['telegram'];
const draft = await telegramAdapter.createDraftStream('12345678');
await draft.start('Processing your request...');
await draft.update('Analyzing data... 50% complete');
await draft.finish('Analysis complete! Here are the results.');
Summary
- 20 platforms supported: From Telegram and Discord to Nostr and Urbit (Tlon), covering consumer, enterprise, and decentralized ecosystems.
- Modular architecture: The Channel Manager in
src/channels/index.tsconditionally loads only configured adapters via factory functions likecreateTelegramChannelandcreateDiscordChannel. - Consistent interface: All adapters implement
ChannelAdapterwith methods for sending, editing, deleting, and reacting to messages. - Flexible configuration: Enable channels via
config.yamlor environment variables; the bot starts even if some credentials are missing. - Advanced features: Support for draft streams, polls, and unified message routing across all platforms.
Frequently Asked Questions
How do I add a new messaging channel to CloddsBot?
To add support for a new platform, create a new directory under src/channels/ implementing the ChannelAdapter interface. You must provide a factory function (e.g., createNewChannel) that returns an object with platform, start, stop, and sendMessage methods. Register this factory in the Channel Manager's adapter list in src/channels/index.ts.
Can CloddsBot run with only some channels enabled?
Yes. The Channel Manager designed in src/channels/index.ts skips any platform where credentials are missing or enabled: false is set in the configuration. The bot starts successfully with partial integrations, making it safe to deploy with only the specific supported messaging channels for CloddsBot that you need.
What is the difference between Zalo Official Account and Zalo Personal channels?
Both variants are defined in src/channels/zalo/index.ts. Zalo Official Account (createZaloChannel) connects to verified business accounts via the Zalo Official Account API, while Zalo Personal (createZaloPersonalChannel) connects to personal user accounts. They require different authentication tokens and API endpoints.
Which adapters support the draft stream feature?
The draft stream API (createDraftStream) allows progressive message updates. While the interface is defined in ChannelAdapter, implementation varies by platform. According to the source code, the Telegram adapter in src/channels/telegram/index.ts fully implements this feature, enabling typing indicators and message updates for long-running operations. Check individual adapter implementations for platform-specific capabilities.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →