Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igorbrigadir/30010817890982ccf432ca8121c6e10a to your computer and use it in GitHub Desktop.
Save igorbrigadir/30010817890982ccf432ca8121c6e10a to your computer and use it in GitHub Desktop.
Get your own Telegram Channels and descriptions in a CSV with the Folder names
import csv
import asyncio
from telethon import TelegramClient
from telethon.tl.functions.messages import GetDialogFiltersRequest
from telethon.tl.functions.channels import GetFullChannelRequest
# Replace the following values with your own API ID and hash obtained from https://my.telegram.org
api_id = "..."
api_hash = "..."
async def main():
# Initialize the Telegram client
async with TelegramClient("anon", api_id, api_hash) as client:
# Get the list of dialog filters
response = await client(GetDialogFiltersRequest())
with open(
"telegram_channels.csv", mode="w", newline="", encoding="utf-8"
) as csv_file:
fieldnames = ["id", "folder", "url", "name", "description"]
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
# Iterate through the filters
for dialog_filter in response:
if hasattr(dialog_filter, "include_peers"):
# print(dialog_filter)
for entity in await client.get_entity(dialog_filter.include_peers):
if hasattr(entity, "deleted") and (entity.deleted):
continue
description = ""
try:
full = await client(GetFullChannelRequest(entity))
full_channel = full.full_chat
description = str(full_channel.about).replace("\n", " ")
except:
print(entity)
print("Failed to get description")
writer.writerow(
{
"id": entity.id,
"folder": dialog_filter.title,
"url": f"https://t.me/{entity.username}"
if entity.username is not None
else "",
"name": entity.title
if hasattr(entity, "title")
else "",
"description": description,
}
)
# Run the main function asynchronously
asyncio.run(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment