Задать вопрос
@enabl3

Доступ к боту по chat.id, Как?

Подскажите пожалуйста, хочу вынести все чат ид, которым доступен бот в отдельный файл где айдишники будут указаны построчно, делаю так:
file = open("users.txt")
users = file.readlines()
file.close()
@bot.message_handler(func=lambda message: message.chat.id not in users)
def access_msg(message):
bot.send_message(message.chat.id, "No Access!")

Отвечает всем что нет доступа.
Рабочая версия:
users = [тут чат ид через запятую]
@bot.message_handler(func=lambda message: message.chat.id not in users)
def access_msg(message):
bot.send_message(message.chat.id, "No Access!")

Как исправить?
  • Вопрос задан
  • 1122 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
fdhadzh
@fdhadzh
Perfectionist with deadlines
Возможно message.chat.id является числом, поэтому все строки из users.txt Вам необходимо привести к числовому типу.

Попробуйте так:

with open('users.txt', 'r') as fp:
    user_ids = [int(l) for l in fp.readlines()]


@bot.message_handler(func=lambda message: message.chat.id not in user_ids)
def access_msg(message):
    bot.send_message(message.chat.id, 'No Access!')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@spikejke
Возможно , Вам будет проще использовать модуль pickle https://docs.python.org/3.6/library/pickle.html
import pickle
users = [тут чат ид через запятую]
#Записываем Вашу переменную в файл:
with open('chat.id', 'wb') as f:
	pickle.dump(users,f)
#Когда нам нужна переменная читаем из файла
with open('chat.id', 'rb') as f:
	users = pickle.load(f)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы