Skip to content

Telegram bot

You can create Telegram bots using vals.

In this example, you’ll create a val that uses the HTTP Val to receive webhooks from Telegram.

When users message your bot, the bot will reply with the same message.

Create your bot by talking to @BotFather

Speak to Telegram’s https://t.me/botfather to create your bot and obtain a bot token.

Screenshot 2023-06-23 at 11.46.35.png

Add the bot token as an environment variable

Copy the bot token you just received and save it as a Val Town environment variable as telegramBotToken.

Check your token works

Call vtdocs/telegramGetMe with your newly created environment variable to check that it works.

Check tokenRun in Val Town ↗
import { telegramGetMe } from "https://esm.town/v/vtdocs/telegramGetMe";
console.log(await telegramGetMe(Deno.env.get("telegramBotToken")));

Create an environment variable so you can verify webhooks

Generate a random string and save it as a Val Town environment variable as telegramWebhookSecret. A valid token is 1-256 characters. Only characters A-Z, a-z, 0-9, _ and - are allowed.

Create a webhook handler to receive messages

When Telegram users send messages to your bot, they will be forwarded to your webhook handler. We’ll use the environment variable we just created to verify that the message came from our bot.

Copy this val that uses the HTTP Val :

Tell your bot about the webhook handler

Use vtdocs/telegramSetWebhook to tell your bot where to send webhooks.

Register webhookRun in Val Town ↗
import { telegramSetWebhook } from "https://esm.town/v/vtdocs/telegramSetWebhook?v=2";
const token = Deno.env.get("telegramBotToken");
const secret_token = Deno.env.get("telegramWebhookSecret");
export const setWebhookExample = await telegramSetWebhook(
token,
{
// Replace this with _your_ web endpoint
url: "https://neverstew-telegramWebhookEchoMessage.web.val.run",
// Optionally, filter what kind of updates you want to receive here
allowed_updates: ["message"],
secret_token: secret_token,
}
);
console.log(setWebhookExample)

Send a message to your bot to check it works!

It should echo back the message like this:

Screenshot 2023-06-23 at 13.17.52.png

Not working? Try debugging the webhook handler you created via the Evaluations tab. Or get help on Val Town’s Discord.