Но я не понимаю вообще, как можно отметить всех пользователей сразу?
- Вопрос задан более года назад
- 6660 просмотров
2 комментария
Простой 2 комментария
https://qna.habr.com/q/1160934
И рекомендую попробовать переслать сообщение ShowJsonBot.
В общем случае отметить всех будет проблематично, так как группы бывают очень большими, а длина сообщения ограничена.
shurshur, showjsonbot показал что в сообщении есть упоминание всех участников. Но я не могу понять каким апи методом я могу взять список участников чата в котором состоит бот
Может вы хоть сможете помочь
Решения вопроса 0
Ответы на вопрос 1
Вставь в сообщение ники всех пользователей, отправь и сразу отредактируй, удалив ники. И научись пользоваться гуглом. Этот вопрос тут чуть ли не раз в день задают
Ответ написан более года назад
могу ошибаться, но вроде тг не дает возможности получить список всех пользователей в чате
driverx18, Какая разница? Вопрос вообще не в этом
i3a4em, так автор задал вопрос как тэгнуть всех в чате, ваш ответ был в том что автор глупый и тут очевидно что надо тэгнуть всех пользователей и изменить текст. Но как тэгнуть всех пользователей, если их список недоступен телеграмом?
driverx18, Подожди ка. Если ты не знаешь, как получить все id (про то что их можно сохранять в бд при входе юзеров, или про библиотеки типа telethon, которые позволяют это делать) — это совсем другая история. Во первых не нужно думать за автора вопроса. Что для него очевидно — известно только ему.
Во вторых глупым я его не называл. Это был сарказм с намеком на лень.
Вопрос был:
Как отметить всех пользователей в чате телеграм ботом?
—
я подсказал как.
i3a4em, мне нужно взять всех пользователей которые есть в чате
допустим чат существует давно, туда добавляют моего бота, и нужно чтобы он мог тэгнуть ВСЕХ кто там есть. В базе их у меня нет, потому что бота добавили туда одним из последних
Twitt, Тогда telethon попробуй, Вот нужный метод
Twitt, telethon нужен только для того, чтобы получить начальный список пользователей в группе. Далее надо ботом следить за входящими/выходящими и за счёт этого поддерживать список в актуальном состоянии.
Но я бы советовал просто сразу оставить идею вообще «пинговать всех», это плохая практика и это, как правило, даже не лучшее решение даже реальных практических полезных задач. Например, если надо уведомлять пользователях о каких-то событиях или новостях, то это правильно делать с помощью канала.
shurshur, Такие методы применяют для того, что бы обойти отключение уведомлений у пользователя. Хоть такие способы и кажутся грязными, когда на весах «эстетичный подход к решению вопроса» и «битва за клиента» — очевидно что перевесит второе и это вполне себе инструмент.
Ну вообщем это только мое мнение)
i3a4em, такие методы применяют для того, чтобы не делать правильно. В результате пользователи просто будут уходить из таких чатов, битва за клиента будет проиграна.
shurshur, по поводу тэгать всех, могу сказать так — так надо, прям без этого никак)
По поводу телефона — я так понимаю, что это какая то питоновская надстройка над апишкой телеги? Просто я не на питоне пишу
Twitt, это python-реализация клиентского (не ботового) API (MTProto). Есть и под другие языки, например, стандартная tdlib.
В принципе, так как это разовая операция на стадии первичного внедрения, то можно и на питоне один раз написать не очень длинный код.
Источник: qna.habr.com
Парсим телегу. Как собирать имена участников чатов в Telegram
Недавно окунулся в волшебный мир парсинга чатов в «Телеграме» и был удивлен, сколько однотипных вопросов задают, какой низкий уровень понимания у людей, нуждающихся в парсинге, и как много разводов и злоупотреблений со стороны тех, кто берется предоставлять такую услугу. Посмотрев на это, я решил разобраться самостоятельно.
В этой статье я постараюсь максимально доступно даже для далеких от кодинга людей рассказать, что можно сделать, что нельзя и какова трудоемкость всего процесса. Готовых исходников, правда, я тебе не выдам, но будут небольшие примеры для наглядности.
Как известно, в «Телеграме» есть чаты и каналы, куда, бывает, набивается множество пользователей. Иногда весьма полезно иметь их список, например для каких‑то рассылок и приглашений.
Обычно под словом «парсинг» в контексте телеги понимается именно получение списка пользователей канала или чата. Реже — получение еще и списка сообщений.
Каналы
Начнем с каналов. Канал — это некий ресурс в «Телеграме», где юзеры только читают сообщения владельца канала. Сами они ничего писать не могут за исключением тех случаев, когда к каналу привязан чат для комментариев. Тогда у подписчиков появляется возможность комментировать сообщения владельца.
Получить список подписчиков канала без привязанного к нему чата с комментариями можно, только если это твой канал и у него меньше 200 подписчиков. Если хотя бы одно из этих условий не выполняется, парсинг недоступен чисто технически и никто не сможет его провести, что бы тебе ни обещали. Возможно, в будущем появятся какие‑то новые способы — легальные или с использованием дыр, но пока рабочих способов нет.
Если же чат с комментариями существует, то спарсить пользователей ты можешь точно так же, как в случае с любым другим чатом.
Что касается списка сообщений в канале, то его можно получить как программно, через API «Телеграма», так и вручную, экспортировав список сообщений с помощью штатного клиента.
Чаты
С чатами гораздо интереснее. Вручную вытащить список юзеров через стандартный клиент не получится, разве что сидеть с блокнотом и ручкой и выписывать всю интересующую информацию. Способ не очень, так что придется посмотреть в сторону родного API Telegram или, если хочешь упростить себе жизнь, на какую‑нибудь библиотеку, например Telethon.
В Telethon есть функция GetParticipantsRequest, которая получает на вход некую сущность (entity), а на выходе выдает список пользователей.
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Источник: xakep.ru
Можно ли получить список всех участников чата в Telegram?
Подскажите, пожалуйста, можно ли каким-то образом получить список всех участников некоторого чата в Telegram? Интересует именно «username» пользователей.
Отслеживать
5,708 3 3 золотых знака 21 21 серебряный знак 44 44 бронзовых знака
задан 11 фев 2018 в 21:23
173 1 1 золотой знак 2 2 серебряных знака 13 13 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Да, возможно, приложу свой скрипт который справляется с данной задачей, Github
Также приложу код тут с пояснениями, на случай удаления репозитория:
Делаем необходимые импорты:
import sys from getpass import getpass from time import sleep # pip install telethon==0.11.5 from telethon import TelegramClient from telethon.errors import SessionPasswordNeededError from telethon.errors.rpc_errors_400 import UsernameNotOccupiedError from telethon.errors.rpc_errors_420 import FloodWaitError from telethon.tl.functions.channels import GetParticipantsRequest from telethon.tl.functions.contacts import ResolveUsernameRequest from telethon.tl.types import ChannelParticipantsSearch, InputChannel
Далее нам нужно создать аккаунт тут https://my.telegram.org и заполнить следующие поля:
api_id = 0 api_hash = » phone = » limit = 100
Теперь нам надо авторизоваться:
Приступаем к сбору пользователей, для этого нам нужен ID чата и access_hash как сказано в документации:
def get_chat_info(username, client): try: chat = client(ResolveUsernameRequest(username)) except UsernameNotOccupiedError: print(‘Chat/channel not found!’) sys.exit() result = < ‘chat_id’: chat.peer.channel_id, ‘access_hash’: chat.chats[0].access_hash >return result