Как забанить человека в боте Телеграмм

Как добавить функцию бана юзера по id в Telegram бота?

Т.е чтобы я мог ввести /ban userid и этот юзер больше не мог писать боту.

Ответы (1 шт):

Пользователь в любом случае сможет писать боту, а вот отвечать ему или нет уже решать нам.

Есть 2 способа это сделать, первый с помощью декоратора, который будет проверять не забанен ли наш юзер:

Как это работает:

  • Бот получает апдейт и вызывает наш хендлер.
  • Вместо оригинально хендлера, у нас уже функция decorator которая замкнула в себе оригинальный хендлер.
  • Когда бот её вызывает, она проверяет не забанен ли наш юзер, если нет — вызывает оригинальный хендлер, в противном случае ничего не делает.

У этого способа есть свой недостаток, мы обрабатываем апдейты забаненных юзеров.

Этого можно избежать переопределив метод get_updates :

from telebot import TeleBot from telebot import apihelper from telebot import types class MyTeleBot(TeleBot): def get_updates(self, *args, **kwargs): json_updates = apihelper.get_updates(self.token, *args, **kwargs) ret = [] for ju in json_updates: if ju[‘message’][‘from’][‘id’] in banned_users: self.last_update_id = ju[‘update_id’] else: ret.append(types.Update.de_json(ju)) return ret

Теперь создаём экземпляр нашего класса:

ХРАНЕНИЕ ПОЛЬЗОВАТЕЛЕЙ в БАЗЕ ДАННЫХ | AIOGRAM + MONGODB | TELEGRAM БОТ С БАЗОЙ ДАННЫХ


bot = MyTeleBot(»)

Далее можем писать наши хендлеры без каких либо декораторов, функция ban_user осталась без изменений.

Ну и не забываем запустить поллинг:

if __name__ == ‘__main__’: bot.infinity_polling()

Как это работает:

  • У нас есть следующая цепочка вызовов при поллинге
  • infinity_polling > polling > __threaded_polling > __retrieve_updates > get_updates > process_new_updates
Еще по теме:  Как из Телеграмма переслать на Ватсап фото Андроиде телефоне

Как мы «отсекаем» апдейты?

Вы наверняка заметили в нашем классе такую проверку:

if ju[‘message’][‘from’][‘id’] in banned_users: self.last_update_id = ju[‘update_id’]

Дело в том, что если не делать self.last_update_id = ju[‘update_id’] , топ наш бот зациклиться на последнем апдейте который мы и хотим пропустить.

Собственно это и делает process_new_updates :

if update.update_id > self.last_update_id: self.last_update_id = update.update_id

Вместо массива banned_users желательно взять базу данных.

Источник: husl.ru

Две настройки Telegram для защиты от спама

К сожалению спам начинает появляться и в Телеграм. Читатели подсказали, как запретить добавление в спам-группы и как заблокировать спам от «Уведомление бот».

В последнее время меня часто стали добавлять в группы и я уже устал нажимать «Выйти и сообщить о спаме».

Оказывается в Телегам можно запретить незнакомым людям добавлять вас в группы.

Это делается так: в главном окне Телеграм нажимаем три полоски в левом верхнем углу — Настройки — Конфиденциальность — Группы и каналы. Переключаем настройку «Кто может добавлять меня в группы?» с «Все» на «Мои контакты».

Как создать чат-бота в Telegram #shorts

С некоторых пор мне начал приходить спам от «Уведомление бот». Откуда он взялся не знаю — совершенно точно ни на какие странные ссылки я не кликал и такого бота не запускал.

Бороться с ним можно так: Нажимаем на иконку бота в заголовке, в открывшемся окне информации о боте нажимаем три точки в верхнем правом углу — там жмём «Остановить бота».

После этого в той же строке настройка сменится на «Перезапустить бота» и нажимать туда конечно же больше не нужно.

Надеюсь, эти две простые настройки сделают вашу жизнь чуть-чуть комфортнее.

Источник: dzen.ru

Еще по теме:  Как попасть в группу в Телеграмме если она не доступна

Что такое черный список в Телеграм

Что такое черный список в Телеграм

Как заблокировать пользователя в Телеграм, а так же канал, группу или назойливого бота, читайте нашу пошаговую инструкцию. Блокировка в Телеграм требуется для того, чтобы забанить надоедливых пользователей спамящих в личные сообщения или бота, который закидывает «личку» своими уведомлениями. Пользователь, который будет заблокирован, не сможет позвонить или написать сообщение.

Для Android и устройств на базе iOS

Блокировка через меню: – Запускаем Телеграм – Открываем меню (в левом верхнем углу) – Заходим в настройки – Нажимаем «Конфиденциальность» – В самом верху нажимаем «Черный список» – В правом верхнем углу нажимаем на кнопку «Добавить» и добавляем пользователя которого хотим заблокировать. Блокировка в чате: – В чате с пользователем нажимаем на имя профиля – Далее «три точки» в правом верхнем углу – Нажимаем «Заблокировать» и подтверждаем. Для блокировки бота достаточно зажать на чате с ним, нажать на «три точки» в правом верхнем углу и кликнуть «заблокировать».

Блокировка канала или группы

Добавить в черный список канал или группу нельзя, в отличии от пользователей. Чтобы избавиться от ненужных каналов, достаточно просто покинуть его или пожаловать на спам. Если вы являетесь владельцем канала, то можно отдельно блокировать подписчиков или удалить канал полностью, в этом случае с него пропадет вся информация без возможности восстановления.

Разблокировка пользователя в Телеграм

Если блокировка пользователя уже неактуальна, то можно выполнить теже действия как и с блокировкой, только вместо заблокировать будет кнопка «разблокировать» или перейти в чат с заблокированным человеком, если он не удален и на месте ввода сообщения будет большая кнопка «разблокировать». Так же можно зайти в черный список Телеграм, где будет перечень всех заблокированных пользователей и ботов. Найти его несложно, достаточно зайти в настройки, далее конфиденциальность и черный список будет в самом верху, справа будет указано количество заблокированых.

Еще по теме:  Можно ли уволиться по Телеграмме с другого города

Как определить, что вы заблокированы

Пользователю не приходит никаких уведомлений о том, что его добавили в черный список, узнать о блокировке можно по нескольким признакам: – Сообщения не читаются долгое время – Собеседник «Был в сети давно» – Аватарка профиля скрыта.

Источник: linkbaza.com

Рейтинг
( Пока оценок нет )
Загрузка ...