TediCross is a bot which bridges a chat in Telegram with a channel in Discord.
There is no public TediCross bot. You need to host it yourself. To host a bot, you need nodejs. The bot requires NodeJS 6 or higher
We now have a Telegram channel where we post news about the bot! Join us at https://t.me/TediCross
The bot is able to relay text messages and media files between Discord and Telegram. @-mentions, URLs, code (both inline and block-style) works well
For a list of known bugs, or to submit a bug or feature request, see this repo's "Issues" tab
Setting up the bot requires basic knowledge of the command line, which is bash or similar on Linux/Mac, and cmd.exe in Windows
- Install nodejs
- Clone this git repo, or download it as a zip or whatever
- Enter the repo
npm install
- Make a copy of the file
example.settings.json
and name itsettings.json
- Aquire a bot token for Telegram (How to create a Telegram bot) and put it in the settings file
- The Telegram bot must be able to access all messages. Talk to @BotFather to disable privacy mode for the bot
- Aquire a bot token for Discord (How to create a Discord bot) and put it in the settings file
- Add the Telegram bot to the Telegram chat
- If the Telegram chat is a supergroup, the bot also needs to be admin of the group, or it won't get the messages. The creator of the supergroup is able to give it admin rights
- Add the Discord bot to the Discord server (https://discordapp.com/oauth2/authorize?client_id=YOUR_CLIENT_ID_HERE&scope=bot&permissions=248832). This requires that you have admin rights on the server
- Start TediCross:
npm start
- Ask the bots for the remaining details. In the Telegram chat and the Discord channel, write
@<botname> chatinfo
. Put the info you get in the settings file - Restart TediCross
Done! You now have a nice bridge between a Telegram chat and a Discord channel
As mentioned in the step by step installation guide, there is a settings file. Here is a description of what the settings do.
telegram
: Object authorizing and defining the Telegram bot's behaviourauth.token
: The Telegram bot's token. It is needed for the bot to authenticate to the Telegram servers and be able to send and receive messages. If set to"env"
, TediCross will read the token from the environment variableTELEGRAM_BOT_TOKEN
useFirstNameInsteadOfUsername
: EXPERIMENTAL If set tofalse
, the messages sent to Discord will be tagged with the sender's username. If set totrue
, the messages sent to Discord will be tagged with the sender's first name (or nickname). Note that Discord users can't @-mention Telegram users by their first name. Defaults tofalse
colonAfterSenderName
: Whether or not to put a colon after the name of the sender in messages from Discord to Telegram. If true, the name is displayedName:
. If false, it is displayedName
. Defaults to falseskipOldMessages
: Whether or not to skip through all previous messages cached from the telegram-side and start processing new messages ONLY. Defaults to true
discord
: Object authorizing and defining the Discord bot's behaviourauth.token
: The Discord bot's token. It is needed for the bot to authenticate to the Discord servers and be able to send and receive messages. If set to"env"
, TediCross will read the token from the environment variableDISCORD_BOT_TOKEN
debug
: If set totrue
, activates debugging output from the bot. Defaults tofalse
bridgeMap
: An array containing all your chats and channels. For each object in this array, you should have the following properties:name
: A internal name of the chat. Appears in the logtelegram
: ID of the chat that is the Telegram end of this bridge. See step 11 on how to aquire itdiscord.guild
: ID of the server the Discord end of the bridge is in. If a message to the bot originates from within this server, but not the correct channel, it is ignored, instead of triggering a reply telling the sender to get their own bot. See step 11 on how to aquire itdiscord.channel
: ID of the channel the Discord end of the bridge is in. See step 11 on how to aquire it
The available settings will occasionally change. The bot takes care of this automatically
Anything capable of running NodeJS should be able to run TediCross. People have had success running it on ordinary laptops, raspberry pis, Amazon Web Services, Google Cloud Platform, and other machines. It runs on both Linux and Windows, and probably also macOS.
The machine must be on for TediCross to work
Not much at all. Almost all the commands are written in the installation guide exactly as they should be entered. The only thing you need to know in addition is the cd
command, in order to navigate to wherever you unpacked TediCross
This happens when you have not entered correct chat IDs in the settings file. See step 11 in the step by step installation guide for instructions on how to get these.
A small gotcha here is that Telegram group chats always have a negative chat ID. Remember to include the "-" in the settings file!
The Telegram team unfortunately decided that bots cannot interact with each other, fearing they would get stuck in infinite loops. This means it is impossible, under any circumstances, for TediCross to relay messages from other Telegram bots to Discord. Discord does not have this limitation, and the Discord side of the bot will happily relay messages from other Discord bots to Telegram
See https://core.telegram.org/bots/faq#why-doesn-39t-my-bot-see-messages-from-other-bots
The Discord library TediCross is using has support for audio channels and voice chat. For this, it needs some additional libraries, like node-opus, libsodium and others. TediCross does not do audio, so these warnings can safely be ignored
This happens when two applications use the same Telegram bot token, or someone has set a webhook on the Telegram bot token. You may simply have accidently launched two instances of TediCross, or someone else has somehow gotten hold of your token
If you haven't accidently launched two instances of TediCross, assume the token is compromised. First, talk to @BotFather to generate a new token for the bot. Then go to https://api.telegram.org/bot/deleteWebhook (with <TOKEN>
replaced with your actual token) to get rid of any webhook set for the bot. Then update the settings file, and restart the bot
Most updates are annouced on the TediCross News channel. Only very minor ones are not
If you downloaded TediCross as a zip, do step 2 and 3 in the installation guide again. Then move the settings file from the old version to the new one and start
If you cloned the git repo, just do a git pull
. Running npm install
may or may not be necessary. It doesn't hurt to run it anyway
If you need any help, ask @Suppen on Telegram