Этот код предназначен для извлечения и сохранения информации о членах чата в файл формата CSV. Основные методы и подходы вы уже знаете, это просто готовый код который вы можете применять уже сейчас.
from pyrogram import Client
import csv
api_id = 1111
api_hash = ""
app = Client("my_session", api_id=api_id, api_hash=api_hash)
group_url = "test"
def main():
with app:
with open("members.csv", "w", newline='', encoding='utf-8') as file:
writer = csv.writer(file)
# Добавляем новые заголовки столбцов
writer.writerow(["ID", "Username", "First Name", "Last Name", "Phone Number",
"Last Online Date", "Joined Date", "Is Bot", "Is Self",
"Is Contact", "Is Verified", "Is Restricted", "Is Scam",
"Is Fake", "Is Support", "Is Premium"])
for member in app.get_chat_members(group_url):
user = member.user
# Получаем дополнительные поля
user_id = user.id
username = f"@{user.username}" if user.username else "None"
first_name = user.first_name if user.first_name else "None"
last_name = user.last_name if user.last_name else "None"
phone_number = user.phone_number if user.phone_number else "None"
last_online_date = user.last_online_date if user.last_online_date else "None"
joined_date = member.joined_date if hasattr(member, 'joined_date') else "None"
is_bot = user.is_bot
# Дополнительные поля из объекта user
is_self = user.is_self
is_contact = user.is_contact
is_verified = user.is_verified
is_restricted = user.is_restricted
is_scam = user.is_scam
is_fake = user.is_fake
is_support = user.is_support
is_premium = user.is_premium
# Дополненная запись данных пользователя в CSV
writer.writerow([user_id, username, first_name, last_name, phone_number,
last_online_date, joined_date, is_bot, is_self, is_contact,
is_verified, is_restricted, is_scam, is_fake, is_support,
is_premium])
# Опциональный вывод информации
print(f"ID: {user_id}, Username: {username}, First Name: {first_name}, Last Name: {last_name}, Phone Number: {phone_number}, Last Online: {last_online_date}, Joined Date: {joined_date}, Is Bot: {is_bot}, Is Self: {is_self}, Is Contact: {is_contact}, Is Verified: {is_verified}, Is Restricted: {is_restricted}, Is Scam: {is_scam}, Is Fake: {is_fake}, Is Support: {is_support}, Is Premium: {is_premium}")
print('-------------')
main()
Код создаёт csv файл, который содержит основные и доступные поля в объекте пользователя .
["ID", "Username", "First Name", "Last Name", "Phone Number", "Last Online Date", "Joined Date", "Is Bot", "Is Self", "Is Contact", "Is Verified", "Is Restricted", "Is Scam", "Is Fake", "Is Support", "Is Premium"]
Запустите код выше и отформатируйте таблицу вручную чтобы получить похожую таблицу.
Описание кода:
Цикл for для обхода участников чата:
for member in app.get_chat_members(group_url):
Этот цикл перебирает всех участников чата, полученных из функции app.get_chat_members(group_url). Для каждого участника member в чате выполняются последующие операции.
Извлечение и обработка данных пользователя:
user = member.user
user_id = user.id
username = f"@{user.username}" if user.username else "None"
...
is_premium = user.is_premium
Здесь извлекается информация о каждом пользователе (например, идентификатор, имя пользователя, имя, фамилия и так далее) из объекта user, который является частью объекта member.
Запись данных пользователя в CSV:
writer.writerow([...])
Этот метод записывает данные каждого пользователя в отдельную строку CSV-файла.