Telethon как у entity определить канал это или группа и могу ли я в ней писать?
При получении списка всех диалогов Telethon делит их на три типа channel, chat, user как я могу определить что это за диалог канал или группа и как определить могу ли я в них писать, например если я забанен в группе?
Ответы (3 шт):
Ответа на библиотеке telethon мне найти не удалось, но ещё немного постаравшись, мне удалось найти решение на библиотеке pyrogram, код ниже выведет вам тип диалога, диалоги в которых можно писать сообщения, идут под типом ChatType.GROUP и ChatType.SUPERGROUP:
import asyncio
from pyrogram import Client
api_id = api_id
api_hash = 'api_hash'
app = Client("account", api_id, api_hash)
app.start()
async def get_dialog():
async for dialog in app.get_dialogs():
print(dialog.chat.type)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(get_dialog())
Думаю уже ответ не актуален, но возможно поможет тем, кто только наткнулся на эту проблему. С обновлением библиотеки, определить ТОЧНЫЙ тип диалога - нельзя, но можно понять, пользователь или группа/канал, делает это просто:
async def main():
await client.start()
async for dialog in client.iter_dialogs():
print(f'type - {dialog.is_user}')
Понять, канал или чат, можно проверяя у диалога параметр "dialog.entity.megagroup":
for dialog in client.iter_dialogs():
if 'Channel' in str(type(dialog.entity)): # откидываем юзеров
if dialog.entity.megagroup:
print(dialog.entity.id, '//', dialog.entity.username, ' - ', dialog.name, ' is CHAT')
else:
print(dialog.entity.id, '//', dialog.entity.username, ' - ', dialog.name, ' is CHANNEL')