Kickchatmember Telegram как применять

laiser

Известный

Автор темы

Всем привет. Пишу модератора для группы телеграм.
В библиотеке есть 2 команды:

await message.bot.kick_chat_member() await message.bot.ban_chat_member()

Я так понимаю для группы они не отличаются, а для чата или супер группы есть разница. Верно понимаю?

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

манку хлебал

Всем привет. Пишу модератора для группы телеграм.
В библиотеке есть 2 команды:

await message.bot.kick_chat_member() await message.bot.ban_chat_member()

Я так понимаю для группы они не отличаются, а для чата или супер группы есть разница. Верно понимаю?

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


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

разбань после бана и все

Потому что разница в скорости библиотек мизерная, если не подгружать никаких БД, а мозгоёбства с aiogram в миллион раз больше.

Новые телеграм боты / день 1

потоки и асинхронность вообще разные вещи xD
aiogram в.

Josski Molodoi

Активный

б$!ть, юзайте telebot и потоки

Josski Molodoi

Активный

Потому что разница в скорости библиотек мизерная, если не подгружать никаких БД, а мозгоёбства с aiogram в миллион раз больше.

манку хлебал

Потрачен

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Всем привет. Пишу модератора для группы телеграм.
В библиотеке есть 2 команды:

await message.bot.kick_chat_member() await message.bot.ban_chat_member()

Я так понимаю для группы они не отличаются, а для чата или супер группы есть разница. Верно понимаю?

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

Еще по теме:  Как разводят онлайн модели в чат Телеграмм

Источник: www.blast.hk

Простенький вопрос. Видимо я пропустил. Метод kickChatMember стал deprecated и

Ясно. То есть banChatMember просто переименованный kickChatMember. Спасибо. Хотел убедиться.

08:57 23.07.2022
Renat Suleymanov
Ясно. То есть banChatMember просто переименованный.
08:57 23.07.2022

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

А на submit основной кнопки коллбэк летит боту?

вчера в 13:14

Кто использует web app в ботах подскажите пожалуйста — реально засунуть туда интерактивные графики вроде chart.js?

вчера в 11:57

А можно в боте использовать несколько web app или есть ограничения?

вчера в 17:35

что-то подобное реально? или это утопия

вчера в 12:44

Почему именно интерактивный?

вчера в 12:44

Всем привет, бота по авто смене ссылки в канале, может кто сделать?

07:20 21.05.2023

Народ, какой лимит на количество запросов к тг в секунду? Одному человеку не больше 15 за секунду, это я знаю, а какой лимит, если в ЦЕЛОМ делать рассылку сразу в 10-15 потоко.

Чистим Кэш Телеграм за 3 нажатия! ОЧЕНЬ ВАЖНО ДЕЛАТЬ ПОСТОЯННО!!!

12:25 21.05.2023

Как обосновывать для телеграм-саппорта необходимость в поднятии лимитов и какие лимиты можно расширить?

08:05 18.05.2023

У меня был опыт с заказами, но потом я решил подачаться, и сейчас готовлюсь по новой взяться за все это Где брал заказы? У знакомых. У меня довольно специфические круги общен.

17:24 18.05.2023

Привет всем! Решил, наконец, проявить немного активности в чате:) Ребят, а кто-то тут зарабатывает на своих ботах? Я имею в виду как разработку на заказ, так и монетизацию сво.

Источник: telq.org

Попытка удалить сообщения «left_chat_member» с помощью бота Telegram

Я пытаюсь выполнить с помощью Telegram Bot следующие действия:

Когда user.first_name соответствует регулярному выражению:

  1. Удалить сообщение «присоединиться».
  2. Выкинуть пользователя из чата.
  3. Удалить «левое» сообщение.

Проблема в том, что я не знаю, как получить message.id для «левого» сообщения, поскольку:

  1. Метод KickChatMember не возвращает объект сообщения, а только true или >.
  2. В отправленном сообщении, которое содержит left_chat_member , user.from установлен для участника, который пинает (в данном случае это сам бот).
  3. Бот не может получать обновления для своего сообщения, поэтому предыдущее сообщение не получено.
Еще по теме:  Темы в Телеграмме Андроид как делать

Таким образом, вопрос заключается в том,

Можно ли получить message.id для сообщения, содержащего left_chat_member , когда оно отправлено самим ботом? Есть ли другой способ добиться этого?

Возможно, я мог бы попытаться вывести message.id , но я не знаю, возможно ли это или рекомендуется.

Bigomby 18 Июн 2018 в 23:24

2 ответа

Лучший ответ

  1. Когда происходит new_chat_members , у вас есть message_id (скажем, A )
  2. Выполнить kick_chat_member (отсутствует message_id )
  3. И отправил сообщение (произвольное), у вас есть message_id (скажем B )

(шаг 1 необязательный)

Сообщение, созданное kick_chat_member , является B-1 , с небольшой вероятностью, что другое сообщение было введено прямо в середине, что, если шаги 2 и 3 должны идти вместе в коде, чтобы максимально сократить время между ними.

А сообщение A служит для определения наименьшего идентификатора. Другими словами, рассматриваемый идентификатор находится между A и B (гарантированно). Если A + 2 равно B , сообщение гарантировано B-1 (или A+1 ). В противном случае не было бы никакой уверенности.

На мой взгляд, left_chat_member должен отправить сообщение боту, который генерирует выходные данные, с этим проблема будет решена, или выполнение kick_chat_member должно вернуть эту информацию.

Решение

Когда new_chat_members запускается в функции, которая им управляет, он может делать следующее (будут использоваться три идентификатора: id1 , id2 и id3 ):

  • id1 — это идентификатор сообщения о присоединении (того, что идет с new_chat_members ).
  • Затем выполняется kick_chat_member (генерируется сообщение о том, что идентификатор неизвестен, id2 ).
  • (Если пользователь был удален) Любое сообщение отправляется с sendMessage , которое дает нам id3 .

Затем мы переходим от id3 — 1 к id1 + 1 (включая оба): для каждого идентификатора в этом цикле мы отправляем «сообщение в ответ» с sendMessage (используя в параметре reply_to_message_id идентификатор цикла), и мы проверяем, содержит ли сгенерированное сообщение в своем параметре reply_to_message.left_chat_member идентификатор пользователя, которого мы удаляем, если он утвердительный, это сообщение, которое мы хотим удалить (исключить, это id2 ), в конце цикла мы также удаляем «сообщение в ответ» (id для каждого шагового цикла).

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

Когда цикл for заканчивается, мы удаляем сообщения с помощью id1 и id3 .

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

Я протестировал это, сделав паузу в 3 секунды между каждым действием в боте и записью в группе (пока бот выполнял пошаговые инструкции).

Пример в Python

В итоге : на все сообщения дается ответ (ответ) от id3 — 1 до id1 + 1 , и выполняется поиск, который содержит left_chat_member с идентификатором пользователя, имеющим был выгнан.

Теперь бот получает служебное сообщение, когда кикнул участника. Достаточно проанализировать, выдает ли бот сообщение о выходе, если да, то это пинок для члена бота.

Schcriher 26 Апр 2019 в 21:22

Попробуйте эти коды в NodeJs

let TelegramBot = require(‘node-telegram-bot-api’); let bot = new TelegramBot(token, ); let regex = ‘givenUser’; /* Part of the user first name that you wanna kick him out*/ bot.on(‘new_chat_members’, (data) => newMembers(data)); bot.on(‘left_chat_member’, (data) => leftMember(data)); function newMembers(data) < let chatId = data.chat.id; let msgId = data.message_id; let userId = data.new_chat_member.id; let firstName = data.new_chat_member.first_name; if (firstName.includes(regex)) < bot.deleteMessage(chatId, msgId).catch(e =>console.log(e)); bot.kickChatMember(chatId, userId).catch(e => console.log(e)); > > function leftMember(data) < let chatId = data.chat.id; let msgId = data.message_id; let firstName = data.left_chat_member.first_name; if (firstName.includes(regex)) < bot.deleteMessage(chatId, msgId).catch(e =>console.log(e)); > >

Источник: question-it.com

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