When I send a message to my Telegram Bot, it responses with no problems.
I wanna limit the access such that me and only me can send message to it.
How can I do that?
When I send a message to my Telegram Bot, it responses with no problems.
I wanna limit the access such that me and only me can send message to it.
How can I do that?
As this question is related to python-telegram-bot, information below is related to it:
When you add handlers to your bot's dispatcher, you can specify various pre-built filters (read more at docs, github) or you can create custom ones in order to filter incoming updates.
To limit access to a specific user, you need to add
Filters.user(username="@telegramusername")
when initializing handler, e.g.:dispatcher.add_handler(CommandHandler("start", text_callback, Filters.user(username="@username")))
This handler will accept
/start
command only from user with username@username
.You can also specify user-id instead of username, which I would highly recommend, as latter is non-constant and can be changed over time.
Start a conversation with your bot, and send it a message. This will queue up an updates for the bot containing the message and the chat ID for your conversation.
To view recent updates, you call the getUpdates method. This is done by making a HTTP GET request to the URL https://api.telegram.org/bot$TOKEN/getUpdates Where $TOKEN is the token provided by the BotFather. Something like:
Once you determined your chat id you can write a piece of code in your bot like:
Filter messages by field
update.message.from.id
Filtering by
update.message.chat_id
works for me. In order to find your chat id, send a message to your bot and browse towhere
$TOKEN
is the bot token as provided by BotFather, as mentioned in the answer by fdicarlo, where you can find the chat id in the json structure.Based on the
python-telegram-bot
code snippets, one can build a simple wrapper around the handler:where
conf['restricted_ids']
might be an id list, e.g.[11111111, 22222222]
.So the usage would look like this: