Задать вопрос
@DeusExe

Как исправить ошибку «Could not find the input entity for PeerChannel»?

использую библиотеку 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
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы