Время от времени владельцы Telegram-групп сталкиваются с тем, что злонамеренные граждане начинают вести себя не особо культурно и наливают в вашу группу тысячи ботов.
Помимо того, что это приводит к параличу любого общения в группе из-за спама сообщениями « Такой-то вступил в группу » и сообщениями от самих ботов, также это может закончится довольно печально, если боты «обучены» выходить из группы, нажав при этом кнопку «Пожаловаться». При достаточном количестве жалоб вы можете лишиться вашего телеграм-чата!
Так что же делать, если в один «прекрасный» день вы видите, что к вам в группу стали пачками добавляться непонятные пользователи?
Наша тактика защиты будет состоять из трёх вещей:
- Добавление в группу бота-администратора, который будет автоматом банить всех новых пользователей
- Очистка всех тех, кто уже успел вступить, до момента, когда был добавлен бот-администратор
- Создание сложностей для проведения повторных атак
Добавляем бота-администратора
Если у вас достаточно большой телеграм-чат и до сих пор нету бота, с помощью которого его можно администрировать и модерировать пользователей, то это большая ошибка!
Топ ботов для каналов
На рынке существует с десяток решений данной проблемы, лично я выбрал для себя бота ChatKeeper. Бот довольно удобный, масса настроек, имеется веб-интерфейс, короче — рекомендую.
После того, как вы добавите его в свою группу и сделаете администратором, вы сможете посылать боту команды. Просто пишите их в чат, бот на них реагирует. С полным списком вы можете ознакомиться вот тут, нас же в данный момент интересует всего одна: /kickall . Смотрим описание
Итак, после включения «режима атаки» ваш новоиспечённый админ будет банить всех ботов, которых вам продолжают наливать в группу. Отлично, мы прекратили приток новых ботов, но что делать с теми, которые уже успели к нам вступить?
Чистим вступивших ботов
Перво-наперво засеките время, когда вы перевели бота-администратора в режим атаки. Допустим, это было 12:15. Далее проматываете вашу группу и ищете момент, когда в неё стали добавляться невнятные пользователи. Допустим, это было в 10:42.
Всех новых пользователей, добавившихся в промежутке 10:42 — 12:15 вам необходимо удалить. Как получить список таких пользователей?
Для решения этой задачи Telegram предоставляет нам полный лог действий, произошедших на канале. Называется он « Recent Actions » и доступен в меню группы.
Если зайти в этот лог, то справа вверху будет кнопка, позволяющая отфильтровать лог по различным типам действий. Нас интересует действие « New members «.
После применения фильтра мы увидим лог добавления всех новых пользователей нашей группы. Но как быть, если к вам успело залететь несколько тысяч ботов? Не будем же мы сами искать их всех в логе и удалять руками?
Конечно же нет. Специально для этой задачи мне пришлось написать небольшое консольное приложение, работающее как под Windows так и под MacOs. Оно делает ровно то, о чём я написал выше: читает лог действий группы за заданный промежуток времени и удаляет новых пользователей.
ВНИМАНИЕ: Лог группы хранится на серверах Telegram в течение 48 часов, после чего удаляется, поэтому начинайте очистку как можно раньше!
Приложение живёт тут и вот как с ним работать:
- Скачиваете весь код из GitHub репозитория в виде zip-архива и разархивируете его в какую-нибудь папку
- Открываете в любом текстовом редакторе файлик Program.cs и редактируете настройки. Вот как выглядит блок настроек
Вам нужно поменять здесь всё-всё-всё. Начнём по порядку:
- Ваш номер телефона — тут всё вполне очевидно.
- Название вашего чата в телеграме. Без собаки!
- Начальная дата, начиная с которой софт будет чистить пользователей. Формат у неё такой: год, месяц, день, часы, минуты, секунды. ВНИМАНИЕ: часовой пояс здесь UTC+0. Поэтому, если у вас, например +3, то вам надо вычесть 3 часа чтобы получить нужную дату.
- Конечная дата, формат тот же, что и у начальной
- apiId и apiHash — число и хэш для доступа к API Телеграма от вашего лица. Их нужно взять вот отсюда.
После того, как вы всё поменяли и сохранили, необходимо скомпилировать и запустить софт. Для этого:
- Ставите себе последний .NET SDK с сайта Microsoft
- Запускаете консоль/терминал и командой cd переходите в папку, в которую разархивировали код
- Пишете dotnet run и жмёте Enter
После того, как вы запустили программу, она спросит у вас код доступа, который придёт вам в Телеграм. Введите его в консоли.
Далее софт начинает чистить всех пользователей в заданном промежутке времени, выглядит это всё примерно вот так
Скорость очистки равна 300 пользователей за 13 минут, т.е. примерно полторы тысячи в час. К сожалению, быстрее не получится, Telegram ограничивает повторяющиеся API-запросы. Так что просто запустите программу фоном и пусть работает.
Заметка: если вы программист, то вы можете ускорить работу программы, добавив в группу ещё несколько админов, далее получить для них apiId и apiHash, после чего чистить группу многопоточно, используя все аккаунты админов, что есть в наличии.
После того, как софт закончит удалять ботов, переходим к третьей части Марлезонского балета.
Усложняем возможность проведения последующих атак на вашу группу
Если только против вас действуют не профессионалы, то самым действенным способом ограничить налив ботов к вам в группу является установка какой-либо проверки для новых пользователей.
Проверки могут быть разнообразными: нажатие на кнопку «Войти», решение несложной математической задачки, капча и т.п. Мы с вам остановимся на самой простой: кнопке «Войти».
Для её реализации нам потребуется всё тот же бот-администратор ChatKeeper. Переходим в веб-интерфейс бота, выбираем «Настройки» — «Приветствие» и ставим всё примерно так как на скрине ниже:
После чего сохраняем настройки. Всё, теперь все пользователи, которые не проходят проверку (т.е. не нажамают на кнопку) будут удалены!
Поздравляю! Вы только что сделали всё необходимое, чтобы защитить вашу Telegram-группу. Для того, чтобы добавить вместо кнопки, например, математическую задачку — читайте справку ChatKeeper-а, а я же со своей стороны пожелаю вашей группе процветать и здравствовать, успехов!
Источник: yellowweb.top
Ведение публикаций в Telegram-канале с python-telegram-bot
Отправка/редактирование/удаление сообщений в Telegram-канале
Если при помощи python-telegram-bot планируется только вести Telegram-канал (например, публиковать анонсы новых статей сайта или их обновления), то ставить полностью библиотеку со всеми зависимостями не обязательно. Достаточно установить чистый интерфейс Python для Telegram Bot API python-telegram-bot-raw .
Так как TelegramBot нужен для ведения Telegram-канала, следовательно он не будет принимать каких либо сообщений, а будет только отправлять, удалять или редактировать уже отправленные сообщения в Telegram-канал. Для таких задач высокоуровневый интерфейс расширения telegram.ext не нужен. Расширение telegram.ext в основном используется для удобной обработки входящих сообщений, создания вебхука или регулярных обновлений бота и т.д.
Для начала необходимо создать Telegram-канал:
- Для создания канала со смартфона необходимо нажать на значок с карандашом. Он отображается в окне со списком переписок и каналов. После этого нажмите на кнопку Создать канал .
- В десктопной версии Telegram необходимо зайти в меню, а затем нажать на кнопку Создать канал .
После этого Telegram предложит написать имя канала, заполнить описание и поставить аватарку. Заполнять описание и выбирать картинку на этом этапе не обязательно, а вот без названия дальше работать с каналом не получится. Обратите внимание, что имя канала, описание и аватарку можно изменить в любой момент.
Затем выбираем тип канала: публичный или частный:
- Публичный канал можно найти через поиск, а подписаться на него может любой пользователь Telegram.
- Частный канал доступен только по ссылке-приглашению, то есть его нельзя найти через поиск.
Выбираем публичный, придумываем и вводим ссылку, по которой можно будет попасть на канал. Эта ссылка, также служит в качестве chat_id , на нее отправляются новые сообщения.
Осталось только добавить этого бота в качестве администратора канала (для Desktop клиента):
- Открываем канал, жмем три точки и выбираем «Информация канале»;
- В открывшемся окне опять три точки и выбираем «Управление каналом»;
- Здесь выбираем «Администраторы». В списке ботов не будет.
- В поиске вводим имя созданного бота и жмем «Добавить администратора»;
- Добавить бота может только создатель канала.
- Другие администраторы не могут добавлять ботов в каналы.
- Канал может быть публичным или частным (не имеет значения)
Содержание:
- Отправляем сообщение в Telegram-канал;
- Редактируем сообщение в Telegram-канале;
- Удаляем сообщение в Telegram-канале;
- Закрепляем/открепляем сообщение в Telegram-канале;
- Изменение название и описание канала.
Отправляем сообщение в Telegram-канал.
Например, есть сайт. При публикации очередной статьи/материала можно выполнять представленный ниже код, для отправки сообщения в Telegram-канал. Полученный в результате отправки номер сообщения можно хранить в БД сайта, для случаев редактирования или удаления статьи/материала сайта (отправки сообщения в канал об обновлении статьи или ее удаления).
После отправки сообщения, объект send будет содержать номер сообщения send.message_id в контексте этого канала. Этот номер можно использовать для редактирования или удаления отправленного сообщения.
Редактируем сообщение в Telegram-канале.
Для того, чтобы отредактировать отправленное сообщение в Telegram-канале, необходим его порядковый номер message_id в контексте этого канала, полученный при его отправке.
Метод bot.edit_мessage_text() используется для редактирования текстовых и игровых сообщений. В случае успеха, если отредактированное сообщение не является встроенным сообщением, возвращается отредактированное сообщение, в противном случае возвращается True .
Удаляем сообщение в Telegram-канале.
Для того, чтобы удалить сообщение в Telegram-канале, необходим его порядковый номер message_id в контексте этого канала, полученный при его отправке.
Внимание! Сообщение может быть удалено ботом только в том случае, если оно было отправлено менее 48 часов назад. После 48 часов сообщение может удалить только реальный пользователь (администратор канала), вручную.
Метод bot.delete_message() используется для удаления сообщения, в том числе служебного, со следующими ограничениями:
- Служебные сообщения о создании супергруппы, канала или темы форума не могут быть удалены.
- Сообщение с кубиками в приватном чате можно удалить только в том случае, если оно было отправлено более 24 часов назад.
- Боты могут удалять исходящие сообщения в приватных чатах, группах и супергруппах.
- Боты могут удалять входящие сообщения в приватных чатах.
- Боты с разрешениями can_post_messages могут удалять исходящие сообщения в каналах.
- Если бот является администратором группы, он может удалить там любое сообщение.
- Если у бота есть разрешение can_delete_messages в супергруппе или канале, он может удалить там любое сообщение.
Возвращает True в случае успеха.
Закрепляем/открепляем сообщение в Telegram-канале.
Для того, чтобы закрепить/открепить сообщение в Telegram-канале, необходим его порядковый номер message_id в контексте этого канала, полученный при его отправке.
- Метод bot.pin_chat_message(chat_id, message_id) — закрепляет сообщение для пользователей канала;
- Метод bot.unpin_chat_message(chat_id, message_id) — открепляет сообщение для пользователей канала.
Используйте эти методы, чтобы добавить сообщение в список закрепленных сообщений в чате или открепить его. Если чат не является приватным, бот должен быть администратором в чате и должен иметь права администратора ‘canpinmessages’.
Пример закрепления сообщения в канале Telegram:
Изменение название и описание канала.
Используйте метод bot.set_chat_title() , чтобы изменить название чата/канала. Названия не могут быть изменены для приватных чатов/групп. Чтобы это работало, бот должен быть администратором в чате и иметь соответствующие права администратора. Возвращает True в случае успеха.
Используйте метод bot.set_chat_description() , чтобы изменить описание группы, супергруппы или канала. Чтобы это работало, бот должен быть администратором в чате и иметь соответствующие права администратора. Возвращает True в случае успеха.
Пример изменения названия и описания канала Telegram:
Источник: docs-python.ru
Бот для удаления ссылок в чатах telegram
Чтобы автоматически удалять все публикуемые ссылки в ваш telegram-чат – необходимо добавить и настроить нужного бота.
Важно! Он НЕ будет удалять ссылки от администраторов. А только от обычных пользователей. Также, бота лучше всего добавлять после того, как все администраторы уже добавлены и назначены в чате. Чтобы обновить список администраторов – нужно отправить команду: /watchdog reload_admins
Всё. Теперь все ссылки отправляемые в ваш чат будут автоматически удаляться ботом)
Микола Полтавцев Follow Пишу про технічний бік онлайн-бізнесу, особисту та командну ефективність, нову економіку.
Источник: poltavcev.biz