A minimal example of a Telegram Bot on Cloudflare Workers
CC0-1.0 License
A minimal example of a Telegram Bot running on a Cloudflare Worker.
ENV_BOT_TOKEN
and the value of your bot token from @BotFather
ENV_BOT_SECRET
and set the value to a random secret. See https://core.telegram.org/bots/api#setwebhook
WEBHOOK
variable to a different path. See https://core.telegram.org/bots/api#setwebhook
/registerWebhook
to the url. For example: https://my-worker-123.username.workers.dev/registerWebhook
Ok
. If 401 Unauthorized appears, you may have used a wrong bot token.The bot will send the original message back with Echo:
prepended.
If you want to change it, look at the function onMessage()
. It receives a Message object and sends a text back:
/**
* Handle incoming Message
* https://core.telegram.org/bots/api#message
*/
function onMessage (message) {
return sendPlainText(message.chat.id, 'Echo:\n' + message.text)
}
The file bot2.js contains an improved bot, that demonstrates how to react to commands, send and receive inline buttons, and create MarkdownV2-formatted text.
The file bot3.js contains an improved version that replies inline queries with voice messages.
The voice messages should be stored in OPUS format and .ogg in the cloud you most like.
The audio files are listed in a JSON array with the following structure in a KV namespace called NAMESPACE
and with following content under the key input_files
.
Go to Workers & Pages -> KV and create a new namespace. Add a new key input_files
and store the JSON structure from below with your own audio files.
Now in Overview -> your-worker -> Settings -> Variables -> KV Namespace Bindings bind the namespace to a variable called NAMESPACE
.
[
[
"File Name",
"URL",
duration,
"<tg-spoiler> caption </tg-spoiler>"
],
[
"test",
"https://example.com/my_file.ogg",
5,
"<tg-spoiler>Description in a spoiler</tg-spoiler>"
],
]
The bot4 is a bot that randomly reacts to messages received. It demostrates how to use big reactions when the 🎉 emoji gets chosen.
The source-code is licensed under the CC0-1.0 license. If you need a different license, there are also branches with the MIT and GPL 3 license.