Как я могу ограничить использование бота Telegram только некоторыми пользователями? - PullRequest
0 голосов
/ 19 июня 2020

Я программирую бота Telegram в python с библиотекой python-telegram-bot для python3 .x Это бот для личного использования только (я и некоторые родственники), поэтому я хотел бы чтобы другие пользователи не могли его использовать. Моя идея состоит в том, чтобы создать список авторизованных идентификаторов пользователей, и бот не должен отвечать на сообщения, полученные от пользователей, которых нет в списке. Как я могу это сделать?

Изменить: Я новичок ie как в python, так и в python-telegram-bot. Если возможно, я был бы признателен за фрагмент кода =).

Ответы [ 2 ]

0 голосов
/ 23 июня 2020

Я нашел решение из официальной вики библиотеки, в которой используется декоратор. Код:

from functools import wraps

LIST_OF_ADMINS = [12345678, 87654321] # List of user_id of authorized users

def restricted(func):
    @wraps(func)
    def wrapped(update, context, *args, **kwargs):
        user_id = update.effective_user.id
        if user_id not in LIST_OF_ADMINS:
            print("Unauthorized access denied for {}.".format(user_id))
            return
        return func(update, context, *args, **kwargs)
    return wrapped

@restricted
def my_handler(update, context):
    pass  # only accessible if `user_id` is in `LIST_OF_ADMINS`.

Я просто @restricted каждая функция.

0 голосов
/ 19 июня 2020

Использование идентификатора чата. Создайте небольшой список с идентификаторами чата, которые вы хотите разрешить, остальные можете игнорировать.

Ссылка на документы, где вы можете найти подробную информацию https://python-telegram-bot.readthedocs.io/en/stable/telegram.chat.html

...