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 соответствует регулярному выражению:
- Удалить сообщение «присоединиться».
- Выкинуть пользователя из чата.
- Удалить «левое» сообщение.
Проблема в том, что я не знаю, как получить message.id для «левого» сообщения, поскольку:
- Метод KickChatMember не возвращает объект сообщения, а только true или >.
- В отправленном сообщении, которое содержит left_chat_member , user.from установлен для участника, который пинает (в данном случае это сам бот).
- Бот не может получать обновления для своего сообщения, поэтому предыдущее сообщение не получено.
Таким образом, вопрос заключается в том,
Можно ли получить message.id для сообщения, содержащего left_chat_member , когда оно отправлено самим ботом? Есть ли другой способ добиться этого?
Возможно, я мог бы попытаться вывести message.id , но я не знаю, возможно ли это или рекомендуется.
Bigomby 18 Июн 2018 в 23:24
2 ответа
Лучший ответ
- Когда происходит new_chat_members , у вас есть message_id (скажем, A )
- Выполнить kick_chat_member (отсутствует message_id )
- И отправил сообщение (произвольное), у вас есть 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