использую библиотеку telethon для получения сущностей каналов в телеграме и последующего добавления данных в БД. У меня возникла проблема, я не понимаю почему другие пользователи не могут добавить канал в БД до того как это сделаю я ? На примере:
1. Пользователь пытается добавить канал "Топор"
Появляется ошибка: Could not find the input entity for PeerChannel(channel_id=1234567890) (PeerChannel). Please read ... to find out more details.
2. Я добавляю этот же канал
INFO:sqlalchemy.engine.Engine:[generated in 0.00020s] ('myname', 123456789, -1234567890, 'ТОПОР - Горячие новости'))
3. Пользователь снова пытается добавить тот же канал и у него получается
INFO sqlalchemy.engine.Engine [cached since 2884s ago] ('user-1', 98665432, -1234567890, 'ТОПОР - Горячие новости')
Честно говоря не понимаю почему пользователь не может получить сущности до того как я это сделаю.
Если есть идеи, буду благодарен.
async def get_channel_info(identifier: Union[int, str], info_client: TelegramClient, invite_link: bool) -> Optional[
Tuple[str, Optional[str]]]:
try:
channel = await info_client.get_entity(identifier)
title = channel.title
username = getattr(channel, 'username', None)
if invite_link and not username and getattr(channel, 'broadcast', False):
try:
peer_channel = InputPeerChannel(channel.id, channel.access_hash)
invite = await info_client(ExportChatInviteRequest(peer_channel))
return title, invite.link
except ChatAdminRequiredError:
pass
except FloodWaitError as flood_wait:
print(f"Ошибка: необходимо подождать {flood_wait.seconds} секунд перед повторной попыткой.")
except Exception as invite_error:
print(f"Ошибка при получении пригласительной ссылки: {invite_error}")
# Возвращаем ссылку, если username существует или не удалось создать пригласительную ссылку
link = f't.me/{username}' if username else None
return title, link
except Exception as e:
print(f"Ошибка: {e}")
return None