@bakin2004

Как сделать так, чтобы при не соответствии условиям бот прекращал дальнейшую работу?

Имеется следующий код, который проверяет пользователя на наличие в списке айди. Если же его нету, то выводится сообщение.

import telebot
bot = telebot.TeleBot('мой токен') 

users = [id1,id2,id3]

@bot.message_handler(func=lambda message: message.chat.id not in users)
def CheckUser(message):
    bot.send_message(message.chat.id, "Извини, но ты не можешь работать с ботом")

bot.polling(none_stop=True, interval=0)


Как сделать так, чтобы пользователю, который есть в списке можно было выполнять команды бота, а пользователю, которого нет нельзя?
  • Вопрос задан
  • 473 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Forevka69
как вариант поднимать ошибку.

class DontNeedToDo(Exception):
    pass

@bot.message_handler(func=lambda message: message.chat.id not in users)
def CheckUser(message):
    bot.send_message(message.chat.id, "Извини, но ты не можешь работать с ботом")
    raise DontNeedToDo()


В таком случае после отправки смс будет подниматься ошибка и прекращать выполнения кода.
Только проверь не будет ли падать поллинг изза этого
Ответ написан
Комментировать
Danya_Violet
@Danya_Violet
CTO/CIO
# Ограничение доступа к боту по ID
@bot.message_handler(func=lambda message: message.chat.id not in users)
def some(message):
    bot.send_message(message.chat.id, 'Не дозволено общаться с незнакомцами')


# Ограничение выполнение команды start
@bot.message_handler(func=lambda message: message.chat.id not in users, commands=['start'])
def some(message):
    bot.send_message(message.chat.id, 'Не дозволено')


# Ограничение выполнение команд
@bot.message_handler(func=lambda message: message.chat.id not in users_command,
                     commands=['command1', 'command2', 'command3', 'command4'])
def some(message):
    bot.send_message(message.chat.id, 'Не дозволено')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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