Telegram bot initiate conversation with a user
Asked Answered
S

2

12

I am writing a Telegram bot, to simplify the issue let's say you can ask the bot questions in a channel and it replies to you in private. When the bot receives the command it takes the chat_id of the user from: update.message.from_user.id

But when I do this I get an error:

Unauthorized: Forbidden: bot can't initiate conversation with a user

This sounds quite logical, as I assume this prevents from writing spam bots. The question is how do I overcome it? How can I let the user enable private messages from the bot?

Note: The bot does succeed sending messages to me but not to other users.

Skive answered 22/4, 2018 at 12:9 Comment(2)
Why don't you just send them bot username?Meekins
What do you mean by send them bot username?Skive
I
23

Telegram Bots can't initiate a conversation with a user. Only an user can initiate it by clicking on the start button. There is no way to around this.

In your case, you can ask the user to start the bot before asking questions in the channel, for example by attaching a button containing the bot URL (https://t.me/bot_username).

Infighting answered 22/4, 2018 at 16:52 Comment(2)
In that solution we are not sure that specific user pressed the button, right?Cystic
@Cystic when a user presses a button, you receive a CallbackQuery update / object; you can check the form field for checking which user clicked on the button. Anyway, if it's a URL button, you can't tell, but you can see who issued the /start command to your bot.Infighting
A
-1

message.from_user.id

try instead

message.chat.id

Ayesha answered 10/6, 2021 at 13:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.